<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.4"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Flow-IPC: ipc::transport::Posix_mq_handle Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr id="projectrow">
  <td id="projectalign">
   <div id="projectname">Flow-IPC<span id="projectnumber">&#160;2.0.0</span>
   </div>
   <div id="projectbrief">Flow-IPC project: Full implementation reference.</div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.4 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search",'Search','.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
  initMenu('',true,false,'search.php','Search');
  $(document).ready(function() { init_search(); });
});
/* @license-end */
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div id="nav-path" class="navpath">
  <ul>
<li class="navelem"><a class="el" href="namespaceipc.html">ipc</a></li><li class="navelem"><a class="el" href="namespaceipc_1_1transport.html">transport</a></li><li class="navelem"><a class="el" href="classipc_1_1transport_1_1Posix__mq__handle.html">Posix_mq_handle</a></li>  </ul>
</div>
</div><!-- top -->
<div class="header">
  <div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pub-static-methods">Static Public Member Functions</a> &#124;
<a href="#pub-static-attribs">Static Public Attributes</a> &#124;
<a href="#pri-types">Private Types</a> &#124;
<a href="#pri-methods">Private Member Functions</a> &#124;
<a href="#pri-attribs">Private Attributes</a> &#124;
<a href="#friends">Friends</a> &#124;
<a href="#related">Related Functions</a> &#124;
<a href="classipc_1_1transport_1_1Posix__mq__handle-members.html">List of all members</a>  </div>
  <div class="headertitle"><div class="title">ipc::transport::Posix_mq_handle Class Reference</div></div>
</div><!--header-->
<div class="contents">

<p>Implements the <a class="el" href="classipc_1_1transport_1_1Persistent__mq__handle.html" title="A documentation-only concept defining the behavior of an object representing a light-weight handle to...">Persistent_mq_handle</a> concept by wrapping the POSIX message queue API (see <code>man mq_overview</code>).  
 <a href="classipc_1_1transport_1_1Posix__mq__handle.html#details">More...</a></p>

<p><code>#include &lt;<a class="el" href="posix__mq__handle_8hpp_source.html">posix_mq_handle.hpp</a>&gt;</code></p>
<div class="dynheader">
Inheritance diagram for ipc::transport::Posix_mq_handle:</div>
<div class="dyncontent">
<div class="center"><iframe scrolling="no" frameborder="0" src="classipc_1_1transport_1_1Posix__mq__handle__inherit__graph.svg" width="154" height="119"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
</div>
<center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div>
<div class="dynheader">
Collaboration diagram for ipc::transport::Posix_mq_handle:</div>
<div class="dyncontent">
<div class="center"><iframe scrolling="no" frameborder="0" src="classipc_1_1transport_1_1Posix__mq__handle__coll__graph.svg" width="928" height="491"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
</div>
<center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-methods" name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:a6f5c4dfbc0427f2a8456fb589e5f63d3"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1transport_1_1Posix__mq__handle.html#a6f5c4dfbc0427f2a8456fb589e5f63d3">Posix_mq_handle</a> ()</td></tr>
<tr class="memdesc:a6f5c4dfbc0427f2a8456fb589e5f63d3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Implements <a class="el" href="classipc_1_1transport_1_1Persistent__mq__handle.html" title="A documentation-only concept defining the behavior of an object representing a light-weight handle to...">Persistent_mq_handle</a> API: Construct null handle.  <a href="classipc_1_1transport_1_1Posix__mq__handle.html#a6f5c4dfbc0427f2a8456fb589e5f63d3">More...</a><br /></td></tr>
<tr class="separator:a6f5c4dfbc0427f2a8456fb589e5f63d3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2aa595c11d407fcf343807e64a150be5"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1transport_1_1Posix__mq__handle.html#a2aa595c11d407fcf343807e64a150be5">Posix_mq_handle</a> (flow::log::Logger *logger_ptr, const <a class="el" href="namespaceipc_1_1transport.html#a33de1c256addb3964b839dc2dd407d24">Shared_name</a> &amp;<a class="el" href="classipc_1_1transport_1_1Posix__mq__handle.html#a7d62af06a8cea2a821908384ee098125">absolute_name</a>, <a class="el" href="namespaceipc_1_1util.html#a9d84c2bab504e6de32b20c77ca9723a2">util::Create_only</a> mode_tag, size_t max_n_msg, size_t max_msg_sz, const <a class="el" href="namespaceipc_1_1util.html#a1b398ae730d1e6040687cb2397115152">util::Permissions</a> &amp;perms=<a class="el" href="namespaceipc_1_1util.html#a1b398ae730d1e6040687cb2397115152">util::Permissions</a>(), <a class="el" href="namespaceipc.html#aa3192e586cc45d3e7c22463bf2760f89">Error_code</a> *err_code=0)</td></tr>
<tr class="memdesc:a2aa595c11d407fcf343807e64a150be5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Implements <a class="el" href="classipc_1_1transport_1_1Persistent__mq__handle.html" title="A documentation-only concept defining the behavior of an object representing a light-weight handle to...">Persistent_mq_handle</a> API: Construct handle to non-existing named MQ, creating it first.  <a href="classipc_1_1transport_1_1Posix__mq__handle.html#a2aa595c11d407fcf343807e64a150be5">More...</a><br /></td></tr>
<tr class="separator:a2aa595c11d407fcf343807e64a150be5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab6bb78f2297f6f7c801e200af963574e"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1transport_1_1Posix__mq__handle.html#ab6bb78f2297f6f7c801e200af963574e">Posix_mq_handle</a> (flow::log::Logger *logger_ptr, const <a class="el" href="namespaceipc_1_1transport.html#a33de1c256addb3964b839dc2dd407d24">Shared_name</a> &amp;<a class="el" href="classipc_1_1transport_1_1Posix__mq__handle.html#a7d62af06a8cea2a821908384ee098125">absolute_name</a>, <a class="el" href="namespaceipc_1_1util.html#a9571de958538d7a4a8649bbfecfac0b9">util::Open_or_create</a> mode_tag, size_t max_n_msg_on_create, size_t max_msg_sz_on_create, const <a class="el" href="namespaceipc_1_1util.html#a1b398ae730d1e6040687cb2397115152">util::Permissions</a> &amp;perms_on_create=<a class="el" href="namespaceipc_1_1util.html#a1b398ae730d1e6040687cb2397115152">util::Permissions</a>(), <a class="el" href="namespaceipc.html#aa3192e586cc45d3e7c22463bf2760f89">Error_code</a> *err_code=0)</td></tr>
<tr class="memdesc:ab6bb78f2297f6f7c801e200af963574e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Implements <a class="el" href="classipc_1_1transport_1_1Persistent__mq__handle.html" title="A documentation-only concept defining the behavior of an object representing a light-weight handle to...">Persistent_mq_handle</a> API: Construct handle to existing named MQ, or else if it does not exist creates it first and opens it (atomically).  <a href="classipc_1_1transport_1_1Posix__mq__handle.html#ab6bb78f2297f6f7c801e200af963574e">More...</a><br /></td></tr>
<tr class="separator:ab6bb78f2297f6f7c801e200af963574e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a01d1655e59059fcec0c983d8dbd8f991"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1transport_1_1Posix__mq__handle.html#a01d1655e59059fcec0c983d8dbd8f991">Posix_mq_handle</a> (flow::log::Logger *logger_ptr, const <a class="el" href="namespaceipc_1_1transport.html#a33de1c256addb3964b839dc2dd407d24">Shared_name</a> &amp;<a class="el" href="classipc_1_1transport_1_1Posix__mq__handle.html#a7d62af06a8cea2a821908384ee098125">absolute_name</a>, <a class="el" href="namespaceipc_1_1util.html#a3e03491b5b2b5fac26551a220946d6e5">util::Open_only</a> mode_tag, <a class="el" href="namespaceipc.html#aa3192e586cc45d3e7c22463bf2760f89">Error_code</a> *err_code=0)</td></tr>
<tr class="memdesc:a01d1655e59059fcec0c983d8dbd8f991"><td class="mdescLeft">&#160;</td><td class="mdescRight">Implements <a class="el" href="classipc_1_1transport_1_1Persistent__mq__handle.html" title="A documentation-only concept defining the behavior of an object representing a light-weight handle to...">Persistent_mq_handle</a> API: Construct handle to existing named MQ.  <a href="classipc_1_1transport_1_1Posix__mq__handle.html#a01d1655e59059fcec0c983d8dbd8f991">More...</a><br /></td></tr>
<tr class="separator:a01d1655e59059fcec0c983d8dbd8f991"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab52cab86bdc869577e8f0722c6eb3097"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1transport_1_1Posix__mq__handle.html#ab52cab86bdc869577e8f0722c6eb3097">Posix_mq_handle</a> (<a class="el" href="classipc_1_1transport_1_1Posix__mq__handle.html">Posix_mq_handle</a> &amp;&amp;src)</td></tr>
<tr class="memdesc:ab52cab86bdc869577e8f0722c6eb3097"><td class="mdescLeft">&#160;</td><td class="mdescRight">Implements <a class="el" href="classipc_1_1transport_1_1Persistent__mq__handle.html" title="A documentation-only concept defining the behavior of an object representing a light-weight handle to...">Persistent_mq_handle</a> API: Constructs handle from the source handle while making the latter as-if default-cted.  <a href="classipc_1_1transport_1_1Posix__mq__handle.html#ab52cab86bdc869577e8f0722c6eb3097">More...</a><br /></td></tr>
<tr class="separator:ab52cab86bdc869577e8f0722c6eb3097"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a77520d1e2b4cc9d3a5bd66a240a3ab7e"><td class="memItemLeft" align="right" valign="top"><a id="a77520d1e2b4cc9d3a5bd66a240a3ab7e" name="a77520d1e2b4cc9d3a5bd66a240a3ab7e"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>Posix_mq_handle</b> (const <a class="el" href="classipc_1_1transport_1_1Posix__mq__handle.html">Posix_mq_handle</a> &amp;)=delete</td></tr>
<tr class="memdesc:a77520d1e2b4cc9d3a5bd66a240a3ab7e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Copying of handles is prohibited, per <a class="el" href="classipc_1_1transport_1_1Persistent__mq__handle.html" title="A documentation-only concept defining the behavior of an object representing a light-weight handle to...">Persistent_mq_handle</a> concept. <br /></td></tr>
<tr class="separator:a77520d1e2b4cc9d3a5bd66a240a3ab7e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa8e2e4c19715424d35b4572a29de126b"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1transport_1_1Posix__mq__handle.html#aa8e2e4c19715424d35b4572a29de126b">~Posix_mq_handle</a> ()</td></tr>
<tr class="memdesc:aa8e2e4c19715424d35b4572a29de126b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Implements <a class="el" href="classipc_1_1transport_1_1Persistent__mq__handle.html" title="A documentation-only concept defining the behavior of an object representing a light-weight handle to...">Persistent_mq_handle</a> API: Destroys this handle (or no-op if no handle was successfully constructed, or if it's a moved-from or default-cted handle).  <a href="classipc_1_1transport_1_1Posix__mq__handle.html#aa8e2e4c19715424d35b4572a29de126b">More...</a><br /></td></tr>
<tr class="separator:aa8e2e4c19715424d35b4572a29de126b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aeec1f1528e8d51e85f0cbb784ea23e4b"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classipc_1_1transport_1_1Posix__mq__handle.html">Posix_mq_handle</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1transport_1_1Posix__mq__handle.html#aeec1f1528e8d51e85f0cbb784ea23e4b">operator=</a> (<a class="el" href="classipc_1_1transport_1_1Posix__mq__handle.html">Posix_mq_handle</a> &amp;&amp;src)</td></tr>
<tr class="memdesc:aeec1f1528e8d51e85f0cbb784ea23e4b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Implements <a class="el" href="classipc_1_1transport_1_1Persistent__mq__handle.html" title="A documentation-only concept defining the behavior of an object representing a light-weight handle to...">Persistent_mq_handle</a> API: Replaces handle with the source handle while making the latter invalid as-if default-cted.  <a href="classipc_1_1transport_1_1Posix__mq__handle.html#aeec1f1528e8d51e85f0cbb784ea23e4b">More...</a><br /></td></tr>
<tr class="separator:aeec1f1528e8d51e85f0cbb784ea23e4b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a860882122d8755fbbeb16067cfeaa387"><td class="memItemLeft" align="right" valign="top"><a id="a860882122d8755fbbeb16067cfeaa387" name="a860882122d8755fbbeb16067cfeaa387"></a>
<a class="el" href="classipc_1_1transport_1_1Posix__mq__handle.html">Posix_mq_handle</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><b>operator=</b> (const <a class="el" href="classipc_1_1transport_1_1Posix__mq__handle.html">Posix_mq_handle</a> &amp;)=delete</td></tr>
<tr class="memdesc:a860882122d8755fbbeb16067cfeaa387"><td class="mdescLeft">&#160;</td><td class="mdescRight">Copying of handles is prohibited, per <a class="el" href="classipc_1_1transport_1_1Persistent__mq__handle.html" title="A documentation-only concept defining the behavior of an object representing a light-weight handle to...">Persistent_mq_handle</a> concept. <br /></td></tr>
<tr class="separator:a860882122d8755fbbeb16067cfeaa387"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5787b3fe1eb2a7f5f6abda8b9536529b"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1transport_1_1Posix__mq__handle.html#a5787b3fe1eb2a7f5f6abda8b9536529b">try_send</a> (const <a class="el" href="namespaceipc_1_1util.html#ae0be7edba7e30ffa3f8b742af621f2ab">util::Blob_const</a> &amp;blob, <a class="el" href="namespaceipc.html#aa3192e586cc45d3e7c22463bf2760f89">Error_code</a> *err_code=0)</td></tr>
<tr class="memdesc:a5787b3fe1eb2a7f5f6abda8b9536529b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Implements <a class="el" href="classipc_1_1transport_1_1Persistent__mq__handle.html" title="A documentation-only concept defining the behavior of an object representing a light-weight handle to...">Persistent_mq_handle</a> API: Non-blocking send: pushes copy of message to queue and returns <code>true</code>; if queue is full then no-op and returns <code>false</code>.  <a href="classipc_1_1transport_1_1Posix__mq__handle.html#a5787b3fe1eb2a7f5f6abda8b9536529b">More...</a><br /></td></tr>
<tr class="separator:a5787b3fe1eb2a7f5f6abda8b9536529b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6e9b11537c7c83f43728aca7af348a42"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1transport_1_1Posix__mq__handle.html#a6e9b11537c7c83f43728aca7af348a42">send</a> (const <a class="el" href="namespaceipc_1_1util.html#ae0be7edba7e30ffa3f8b742af621f2ab">util::Blob_const</a> &amp;blob, <a class="el" href="namespaceipc.html#aa3192e586cc45d3e7c22463bf2760f89">Error_code</a> *err_code=0)</td></tr>
<tr class="memdesc:a6e9b11537c7c83f43728aca7af348a42"><td class="mdescLeft">&#160;</td><td class="mdescRight">Implements <a class="el" href="classipc_1_1transport_1_1Persistent__mq__handle.html" title="A documentation-only concept defining the behavior of an object representing a light-weight handle to...">Persistent_mq_handle</a> API: Blocking send: pushes copy of message to queue; if queue is full blocks until it is not.  <a href="classipc_1_1transport_1_1Posix__mq__handle.html#a6e9b11537c7c83f43728aca7af348a42">More...</a><br /></td></tr>
<tr class="separator:a6e9b11537c7c83f43728aca7af348a42"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abe2b3968c60945224ddfce119bcae018"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1transport_1_1Posix__mq__handle.html#abe2b3968c60945224ddfce119bcae018">timed_send</a> (const <a class="el" href="namespaceipc_1_1util.html#ae0be7edba7e30ffa3f8b742af621f2ab">util::Blob_const</a> &amp;blob, <a class="el" href="namespaceipc_1_1util.html#ac66141280c3b7295a86b65209f31cc58">util::Fine_duration</a> timeout_from_now, <a class="el" href="namespaceipc.html#aa3192e586cc45d3e7c22463bf2760f89">Error_code</a> *err_code=0)</td></tr>
<tr class="memdesc:abe2b3968c60945224ddfce119bcae018"><td class="mdescLeft">&#160;</td><td class="mdescRight">Implements <a class="el" href="classipc_1_1transport_1_1Persistent__mq__handle.html" title="A documentation-only concept defining the behavior of an object representing a light-weight handle to...">Persistent_mq_handle</a> API: Blocking timed send: pushes copy of message to queue; if queue is full blocks until it is not, or the specified time passes, whichever happens first.  <a href="classipc_1_1transport_1_1Posix__mq__handle.html#abe2b3968c60945224ddfce119bcae018">More...</a><br /></td></tr>
<tr class="separator:abe2b3968c60945224ddfce119bcae018"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a409b0d91e57c994341d900f840e75bb4"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1transport_1_1Posix__mq__handle.html#a409b0d91e57c994341d900f840e75bb4">is_sendable</a> (<a class="el" href="namespaceipc.html#aa3192e586cc45d3e7c22463bf2760f89">Error_code</a> *err_code=0)</td></tr>
<tr class="memdesc:a409b0d91e57c994341d900f840e75bb4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Implements <a class="el" href="classipc_1_1transport_1_1Persistent__mq__handle.html" title="A documentation-only concept defining the behavior of an object representing a light-weight handle to...">Persistent_mq_handle</a> API: Like <a class="el" href="classipc_1_1transport_1_1Posix__mq__handle.html#a5787b3fe1eb2a7f5f6abda8b9536529b" title="Implements Persistent_mq_handle API: Non-blocking send: pushes copy of message to queue and returns t...">try_send()</a> but without the actual pushing of a message.  <a href="classipc_1_1transport_1_1Posix__mq__handle.html#a409b0d91e57c994341d900f840e75bb4">More...</a><br /></td></tr>
<tr class="separator:a409b0d91e57c994341d900f840e75bb4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acf32c33a96d66436628153c74d4a8eb9"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1transport_1_1Posix__mq__handle.html#acf32c33a96d66436628153c74d4a8eb9">wait_sendable</a> (<a class="el" href="namespaceipc.html#aa3192e586cc45d3e7c22463bf2760f89">Error_code</a> *err_code=0)</td></tr>
<tr class="memdesc:acf32c33a96d66436628153c74d4a8eb9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Implements <a class="el" href="classipc_1_1transport_1_1Persistent__mq__handle.html" title="A documentation-only concept defining the behavior of an object representing a light-weight handle to...">Persistent_mq_handle</a> API: Like <a class="el" href="classipc_1_1transport_1_1Posix__mq__handle.html#a6e9b11537c7c83f43728aca7af348a42" title="Implements Persistent_mq_handle API: Blocking send: pushes copy of message to queue; if queue is full...">send()</a> but without the actual pushing of a message.  <a href="classipc_1_1transport_1_1Posix__mq__handle.html#acf32c33a96d66436628153c74d4a8eb9">More...</a><br /></td></tr>
<tr class="separator:acf32c33a96d66436628153c74d4a8eb9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa46ffcc8019c998313c18ed05b7c6ad3"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1transport_1_1Posix__mq__handle.html#aa46ffcc8019c998313c18ed05b7c6ad3">timed_wait_sendable</a> (<a class="el" href="namespaceipc_1_1util.html#ac66141280c3b7295a86b65209f31cc58">util::Fine_duration</a> timeout_from_now, <a class="el" href="namespaceipc.html#aa3192e586cc45d3e7c22463bf2760f89">Error_code</a> *err_code=0)</td></tr>
<tr class="memdesc:aa46ffcc8019c998313c18ed05b7c6ad3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Implements <a class="el" href="classipc_1_1transport_1_1Persistent__mq__handle.html" title="A documentation-only concept defining the behavior of an object representing a light-weight handle to...">Persistent_mq_handle</a> API: Like <a class="el" href="classipc_1_1transport_1_1Posix__mq__handle.html#abe2b3968c60945224ddfce119bcae018" title="Implements Persistent_mq_handle API: Blocking timed send: pushes copy of message to queue; if queue i...">timed_send()</a> but without the actual pushing of a message.  <a href="classipc_1_1transport_1_1Posix__mq__handle.html#aa46ffcc8019c998313c18ed05b7c6ad3">More...</a><br /></td></tr>
<tr class="separator:aa46ffcc8019c998313c18ed05b7c6ad3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abe9a423ceda292d5b01b54039102170b"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1transport_1_1Posix__mq__handle.html#abe9a423ceda292d5b01b54039102170b">try_receive</a> (<a class="el" href="namespaceipc_1_1util.html#a6cb62ae434900f3a8915b33ec5d61a96">util::Blob_mutable</a> *blob, <a class="el" href="namespaceipc.html#aa3192e586cc45d3e7c22463bf2760f89">Error_code</a> *err_code=0)</td></tr>
<tr class="memdesc:abe9a423ceda292d5b01b54039102170b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Implements <a class="el" href="classipc_1_1transport_1_1Persistent__mq__handle.html" title="A documentation-only concept defining the behavior of an object representing a light-weight handle to...">Persistent_mq_handle</a> API: Non-blocking receive: pops copy of message from queue into buffer and returns <code>true</code>; if queue is empty then no-op and returns <code>false</code>.  <a href="classipc_1_1transport_1_1Posix__mq__handle.html#abe9a423ceda292d5b01b54039102170b">More...</a><br /></td></tr>
<tr class="separator:abe9a423ceda292d5b01b54039102170b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a65f35bfe249b13dc3bc0442d10a55a0f"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1transport_1_1Posix__mq__handle.html#a65f35bfe249b13dc3bc0442d10a55a0f">receive</a> (<a class="el" href="namespaceipc_1_1util.html#a6cb62ae434900f3a8915b33ec5d61a96">util::Blob_mutable</a> *blob, <a class="el" href="namespaceipc.html#aa3192e586cc45d3e7c22463bf2760f89">Error_code</a> *err_code=0)</td></tr>
<tr class="memdesc:a65f35bfe249b13dc3bc0442d10a55a0f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Implements <a class="el" href="classipc_1_1transport_1_1Persistent__mq__handle.html" title="A documentation-only concept defining the behavior of an object representing a light-weight handle to...">Persistent_mq_handle</a> API: Blocking receive: pops copy of message from queue into buffer; if queue is empty blocks until it is not.  <a href="classipc_1_1transport_1_1Posix__mq__handle.html#a65f35bfe249b13dc3bc0442d10a55a0f">More...</a><br /></td></tr>
<tr class="separator:a65f35bfe249b13dc3bc0442d10a55a0f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa853452d0d0aeeaf61461cc8a48b5c09"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1transport_1_1Posix__mq__handle.html#aa853452d0d0aeeaf61461cc8a48b5c09">timed_receive</a> (<a class="el" href="namespaceipc_1_1util.html#a6cb62ae434900f3a8915b33ec5d61a96">util::Blob_mutable</a> *blob, <a class="el" href="namespaceipc_1_1util.html#ac66141280c3b7295a86b65209f31cc58">util::Fine_duration</a> timeout_from_now, <a class="el" href="namespaceipc.html#aa3192e586cc45d3e7c22463bf2760f89">Error_code</a> *err_code=0)</td></tr>
<tr class="memdesc:aa853452d0d0aeeaf61461cc8a48b5c09"><td class="mdescLeft">&#160;</td><td class="mdescRight">Implements <a class="el" href="classipc_1_1transport_1_1Persistent__mq__handle.html" title="A documentation-only concept defining the behavior of an object representing a light-weight handle to...">Persistent_mq_handle</a> API: Blocking timed receive: pops copy of message from queue into buffer; if queue is empty blocks until it is not, or the specified time passes, whichever happens first.  <a href="classipc_1_1transport_1_1Posix__mq__handle.html#aa853452d0d0aeeaf61461cc8a48b5c09">More...</a><br /></td></tr>
<tr class="separator:aa853452d0d0aeeaf61461cc8a48b5c09"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a399bb25dbcfa06437b2f50abcc1500d1"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1transport_1_1Posix__mq__handle.html#a399bb25dbcfa06437b2f50abcc1500d1">is_receivable</a> (<a class="el" href="namespaceipc.html#aa3192e586cc45d3e7c22463bf2760f89">Error_code</a> *err_code=0)</td></tr>
<tr class="memdesc:a399bb25dbcfa06437b2f50abcc1500d1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Implements <a class="el" href="classipc_1_1transport_1_1Persistent__mq__handle.html" title="A documentation-only concept defining the behavior of an object representing a light-weight handle to...">Persistent_mq_handle</a> API: Like <a class="el" href="classipc_1_1transport_1_1Posix__mq__handle.html#abe9a423ceda292d5b01b54039102170b" title="Implements Persistent_mq_handle API: Non-blocking receive: pops copy of message from queue into buffe...">try_receive()</a> but without the actual popping of a message.  <a href="classipc_1_1transport_1_1Posix__mq__handle.html#a399bb25dbcfa06437b2f50abcc1500d1">More...</a><br /></td></tr>
<tr class="separator:a399bb25dbcfa06437b2f50abcc1500d1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0f93df71d0c476e17b32ca4d6bf82b9b"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1transport_1_1Posix__mq__handle.html#a0f93df71d0c476e17b32ca4d6bf82b9b">wait_receivable</a> (<a class="el" href="namespaceipc.html#aa3192e586cc45d3e7c22463bf2760f89">Error_code</a> *err_code=0)</td></tr>
<tr class="memdesc:a0f93df71d0c476e17b32ca4d6bf82b9b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Implements <a class="el" href="classipc_1_1transport_1_1Persistent__mq__handle.html" title="A documentation-only concept defining the behavior of an object representing a light-weight handle to...">Persistent_mq_handle</a> API: Like <a class="el" href="classipc_1_1transport_1_1Posix__mq__handle.html#a65f35bfe249b13dc3bc0442d10a55a0f" title="Implements Persistent_mq_handle API: Blocking receive: pops copy of message from queue into buffer; i...">receive()</a> but without the actual popping of a message.  <a href="classipc_1_1transport_1_1Posix__mq__handle.html#a0f93df71d0c476e17b32ca4d6bf82b9b">More...</a><br /></td></tr>
<tr class="separator:a0f93df71d0c476e17b32ca4d6bf82b9b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a64079f1c9315af2e75e808b6ae5312e5"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1transport_1_1Posix__mq__handle.html#a64079f1c9315af2e75e808b6ae5312e5">timed_wait_receivable</a> (<a class="el" href="namespaceipc_1_1util.html#ac66141280c3b7295a86b65209f31cc58">util::Fine_duration</a> timeout_from_now, <a class="el" href="namespaceipc.html#aa3192e586cc45d3e7c22463bf2760f89">Error_code</a> *err_code=0)</td></tr>
<tr class="memdesc:a64079f1c9315af2e75e808b6ae5312e5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Implements <a class="el" href="classipc_1_1transport_1_1Persistent__mq__handle.html" title="A documentation-only concept defining the behavior of an object representing a light-weight handle to...">Persistent_mq_handle</a> API: Like <a class="el" href="classipc_1_1transport_1_1Posix__mq__handle.html#aa853452d0d0aeeaf61461cc8a48b5c09" title="Implements Persistent_mq_handle API: Blocking timed receive: pops copy of message from queue into buf...">timed_receive()</a> but without the actual popping of a message.  <a href="classipc_1_1transport_1_1Posix__mq__handle.html#a64079f1c9315af2e75e808b6ae5312e5">More...</a><br /></td></tr>
<tr class="separator:a64079f1c9315af2e75e808b6ae5312e5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0afe8a636902116223b4f33f081119df"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1transport_1_1Posix__mq__handle.html#a0afe8a636902116223b4f33f081119df">interrupt_sends</a> ()</td></tr>
<tr class="memdesc:a0afe8a636902116223b4f33f081119df"><td class="mdescLeft">&#160;</td><td class="mdescRight">Implements <a class="el" href="classipc_1_1transport_1_1Persistent__mq__handle.html" title="A documentation-only concept defining the behavior of an object representing a light-weight handle to...">Persistent_mq_handle</a> API: Turn on preemptive/concurrent interruption of blocking-sends and sendable-waits/polls.  <a href="classipc_1_1transport_1_1Posix__mq__handle.html#a0afe8a636902116223b4f33f081119df">More...</a><br /></td></tr>
<tr class="separator:a0afe8a636902116223b4f33f081119df"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a01d842eb304fff361d72a090113ffc9f"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1transport_1_1Posix__mq__handle.html#a01d842eb304fff361d72a090113ffc9f">allow_sends</a> ()</td></tr>
<tr class="memdesc:a01d842eb304fff361d72a090113ffc9f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Implements <a class="el" href="classipc_1_1transport_1_1Persistent__mq__handle.html" title="A documentation-only concept defining the behavior of an object representing a light-weight handle to...">Persistent_mq_handle</a> API: Turn off preemptive/concurrent interruption of blocking-sends and sendable-waits/polls.  <a href="classipc_1_1transport_1_1Posix__mq__handle.html#a01d842eb304fff361d72a090113ffc9f">More...</a><br /></td></tr>
<tr class="separator:a01d842eb304fff361d72a090113ffc9f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a02262faa0f53b5518db359b4e5968b47"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1transport_1_1Posix__mq__handle.html#a02262faa0f53b5518db359b4e5968b47">interrupt_receives</a> ()</td></tr>
<tr class="memdesc:a02262faa0f53b5518db359b4e5968b47"><td class="mdescLeft">&#160;</td><td class="mdescRight">Implements <a class="el" href="classipc_1_1transport_1_1Persistent__mq__handle.html" title="A documentation-only concept defining the behavior of an object representing a light-weight handle to...">Persistent_mq_handle</a> API: Turn on preemptive/concurrent interruption of blocking-receives and receivable-waits/polls.  <a href="classipc_1_1transport_1_1Posix__mq__handle.html#a02262faa0f53b5518db359b4e5968b47">More...</a><br /></td></tr>
<tr class="separator:a02262faa0f53b5518db359b4e5968b47"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4041e66104bf38ddc9dce34d11ccd405"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1transport_1_1Posix__mq__handle.html#a4041e66104bf38ddc9dce34d11ccd405">allow_receives</a> ()</td></tr>
<tr class="memdesc:a4041e66104bf38ddc9dce34d11ccd405"><td class="mdescLeft">&#160;</td><td class="mdescRight">Implements <a class="el" href="classipc_1_1transport_1_1Persistent__mq__handle.html" title="A documentation-only concept defining the behavior of an object representing a light-weight handle to...">Persistent_mq_handle</a> API: Turn off preemptive/concurrent interruption of blocking-receives and receivable-waits/polls.  <a href="classipc_1_1transport_1_1Posix__mq__handle.html#a4041e66104bf38ddc9dce34d11ccd405">More...</a><br /></td></tr>
<tr class="separator:a4041e66104bf38ddc9dce34d11ccd405"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7d62af06a8cea2a821908384ee098125"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="namespaceipc_1_1transport.html#a33de1c256addb3964b839dc2dd407d24">Shared_name</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1transport_1_1Posix__mq__handle.html#a7d62af06a8cea2a821908384ee098125">absolute_name</a> () const</td></tr>
<tr class="memdesc:a7d62af06a8cea2a821908384ee098125"><td class="mdescLeft">&#160;</td><td class="mdescRight">Implements <a class="el" href="classipc_1_1transport_1_1Persistent__mq__handle.html" title="A documentation-only concept defining the behavior of an object representing a light-weight handle to...">Persistent_mq_handle</a> API: Returns name equal to <code>absolute_name</code> passed to ctor.  <a href="classipc_1_1transport_1_1Posix__mq__handle.html#a7d62af06a8cea2a821908384ee098125">More...</a><br /></td></tr>
<tr class="separator:a7d62af06a8cea2a821908384ee098125"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a412e7c922909eeb5707bb0abe6e27a76"><td class="memItemLeft" align="right" valign="top">size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1transport_1_1Posix__mq__handle.html#a412e7c922909eeb5707bb0abe6e27a76">max_msg_size</a> () const</td></tr>
<tr class="memdesc:a412e7c922909eeb5707bb0abe6e27a76"><td class="mdescLeft">&#160;</td><td class="mdescRight">Implements <a class="el" href="classipc_1_1transport_1_1Persistent__mq__handle.html" title="A documentation-only concept defining the behavior of an object representing a light-weight handle to...">Persistent_mq_handle</a> API: Returns the max message size of the underlying queue.  <a href="classipc_1_1transport_1_1Posix__mq__handle.html#a412e7c922909eeb5707bb0abe6e27a76">More...</a><br /></td></tr>
<tr class="separator:a412e7c922909eeb5707bb0abe6e27a76"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a514dbdda12ec70ea1ff65abfa6237ce2"><td class="memItemLeft" align="right" valign="top">size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1transport_1_1Posix__mq__handle.html#a514dbdda12ec70ea1ff65abfa6237ce2">max_n_msgs</a> () const</td></tr>
<tr class="memdesc:a514dbdda12ec70ea1ff65abfa6237ce2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Implements <a class="el" href="classipc_1_1transport_1_1Persistent__mq__handle.html" title="A documentation-only concept defining the behavior of an object representing a light-weight handle to...">Persistent_mq_handle</a> API: Returns the max message count of the underlying queue.  <a href="classipc_1_1transport_1_1Posix__mq__handle.html#a514dbdda12ec70ea1ff65abfa6237ce2">More...</a><br /></td></tr>
<tr class="separator:a514dbdda12ec70ea1ff65abfa6237ce2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a62bc5410c9928099dff46ba021acb879"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespaceipc_1_1transport.html#a7ee4551983d9df16ec16a3139bac50e8">Native_handle</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1transport_1_1Posix__mq__handle.html#a62bc5410c9928099dff46ba021acb879">native_handle</a> () const</td></tr>
<tr class="memdesc:a62bc5410c9928099dff46ba021acb879"><td class="mdescLeft">&#160;</td><td class="mdescRight">Implements <a class="el" href="classipc_1_1transport_1_1Persistent__mq__handle.html" title="A documentation-only concept defining the behavior of an object representing a light-weight handle to...">Persistent_mq_handle</a> API: Returns the stored native MQ handle; null if not open.  <a href="classipc_1_1transport_1_1Posix__mq__handle.html#a62bc5410c9928099dff46ba021acb879">More...</a><br /></td></tr>
<tr class="separator:a62bc5410c9928099dff46ba021acb879"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-static-methods" name="pub-static-methods"></a>
Static Public Member Functions</h2></td></tr>
<tr class="memitem:a658271ad982e3e0af4c3666b947019cc"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1transport_1_1Posix__mq__handle.html#a658271ad982e3e0af4c3666b947019cc">remove_persistent</a> (flow::log::Logger *logger_ptr, const <a class="el" href="namespaceipc_1_1transport.html#a33de1c256addb3964b839dc2dd407d24">Shared_name</a> &amp;name, <a class="el" href="namespaceipc.html#aa3192e586cc45d3e7c22463bf2760f89">Error_code</a> *err_code=0)</td></tr>
<tr class="memdesc:a658271ad982e3e0af4c3666b947019cc"><td class="mdescLeft">&#160;</td><td class="mdescRight">Implements <a class="el" href="classipc_1_1transport_1_1Persistent__mq__handle.html" title="A documentation-only concept defining the behavior of an object representing a light-weight handle to...">Persistent_mq_handle</a> API: Removes the named persistent MQ.  <a href="classipc_1_1transport_1_1Posix__mq__handle.html#a658271ad982e3e0af4c3666b947019cc">More...</a><br /></td></tr>
<tr class="separator:a658271ad982e3e0af4c3666b947019cc"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1df87fc56734cb902a71340eab6c0303"><td class="memTemplParams" colspan="2">template&lt;typename Handle_name_func &gt; </td></tr>
<tr class="memitem:a1df87fc56734cb902a71340eab6c0303"><td class="memTemplItemLeft" align="right" valign="top">static void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classipc_1_1transport_1_1Posix__mq__handle.html#a1df87fc56734cb902a71340eab6c0303">for_each_persistent</a> (const Handle_name_func &amp;handle_name_func)</td></tr>
<tr class="memdesc:a1df87fc56734cb902a71340eab6c0303"><td class="mdescLeft">&#160;</td><td class="mdescRight">Implements <a class="el" href="classipc_1_1transport_1_1Persistent__mq__handle.html" title="A documentation-only concept defining the behavior of an object representing a light-weight handle to...">Persistent_mq_handle</a> API.  <a href="classipc_1_1transport_1_1Posix__mq__handle.html#a1df87fc56734cb902a71340eab6c0303">More...</a><br /></td></tr>
<tr class="separator:a1df87fc56734cb902a71340eab6c0303"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-static-attribs" name="pub-static-attribs"></a>
Static Public Attributes</h2></td></tr>
<tr class="memitem:a1ba246862d7484019476e9b60426833e"><td class="memItemLeft" align="right" valign="top">static const <a class="el" href="namespaceipc_1_1transport.html#a33de1c256addb3964b839dc2dd407d24">Shared_name</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1transport_1_1Posix__mq__handle.html#a1ba246862d7484019476e9b60426833e">S_RESOURCE_TYPE_ID</a> = <a class="el" href="classipc_1_1util_1_1Shared__name.html#a48f20b7b54490aa10dc64081d34c55b2">Shared_name::ct</a>(&quot;posixQ&quot;)</td></tr>
<tr class="memdesc:a1ba246862d7484019476e9b60426833e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Implements concept API.  <a href="classipc_1_1transport_1_1Posix__mq__handle.html#a1ba246862d7484019476e9b60426833e">More...</a><br /></td></tr>
<tr class="separator:a1ba246862d7484019476e9b60426833e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af4a21d3354b44d99aee79af5b1464f10"><td class="memItemLeft" align="right" valign="top">static constexpr bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1transport_1_1Posix__mq__handle.html#af4a21d3354b44d99aee79af5b1464f10">S_HAS_NATIVE_HANDLE</a> = true</td></tr>
<tr class="memdesc:af4a21d3354b44d99aee79af5b1464f10"><td class="mdescLeft">&#160;</td><td class="mdescRight">Implements concept API. Contrast this value with <a class="el" href="classipc_1_1transport_1_1Bipc__mq__handle.html#a7507ac097eb580a44622429c69af2f1d" title="Implements concept API.">Bipc_mq_handle::S_HAS_NATIVE_HANDLE</a>.  <a href="classipc_1_1transport_1_1Posix__mq__handle.html#af4a21d3354b44d99aee79af5b1464f10">More...</a><br /></td></tr>
<tr class="separator:af4a21d3354b44d99aee79af5b1464f10"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pri-types" name="pri-types"></a>
Private Types</h2></td></tr>
<tr class="memitem:a4bf3bfa8192e7d73e52054c63919187a"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1transport_1_1Posix__mq__handle.html#a4bf3bfa8192e7d73e52054c63919187a">Pipe_writer</a> = <a class="el" href="namespaceipc_1_1util.html#a844d5ca9c17b672644fc8d9dbe758db0">util::Pipe_writer</a></td></tr>
<tr class="memdesc:a4bf3bfa8192e7d73e52054c63919187a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Short-hand for anonymous pipe write end.  <a href="classipc_1_1transport_1_1Posix__mq__handle.html#a4bf3bfa8192e7d73e52054c63919187a">More...</a><br /></td></tr>
<tr class="separator:a4bf3bfa8192e7d73e52054c63919187a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0cf6cf0cd88b34cfd7dd93d66e383f95"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1transport_1_1Posix__mq__handle.html#a0cf6cf0cd88b34cfd7dd93d66e383f95">Pipe_reader</a> = <a class="el" href="namespaceipc_1_1util.html#aaf368acf8243bb25de3eef4e836c15de">util::Pipe_reader</a></td></tr>
<tr class="memdesc:a0cf6cf0cd88b34cfd7dd93d66e383f95"><td class="mdescLeft">&#160;</td><td class="mdescRight">Short-hand for anonymous pipe read end.  <a href="classipc_1_1transport_1_1Posix__mq__handle.html#a0cf6cf0cd88b34cfd7dd93d66e383f95">More...</a><br /></td></tr>
<tr class="separator:a0cf6cf0cd88b34cfd7dd93d66e383f95"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pri-methods" name="pri-methods"></a>
Private Member Functions</h2></td></tr>
<tr class="memitem:af5471cf5d7a11cf725e291fad962a636"><td class="memTemplParams" colspan="2">template&lt;typename Mode_tag &gt; </td></tr>
<tr class="memitem:af5471cf5d7a11cf725e291fad962a636"><td class="memTemplItemLeft" align="right" valign="top">&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classipc_1_1transport_1_1Posix__mq__handle.html#af5471cf5d7a11cf725e291fad962a636">Posix_mq_handle</a> (Mode_tag mode_tag, flow::log::Logger *logger_ptr, const <a class="el" href="namespaceipc_1_1transport.html#a33de1c256addb3964b839dc2dd407d24">Shared_name</a> &amp;<a class="el" href="classipc_1_1transport_1_1Posix__mq__handle.html#a7d62af06a8cea2a821908384ee098125">absolute_name</a>, size_t max_n_msg_on_create, size_t max_msg_sz_on_create, const <a class="el" href="namespaceipc_1_1util.html#a1b398ae730d1e6040687cb2397115152">util::Permissions</a> &amp;perms_on_create, <a class="el" href="namespaceipc.html#aa3192e586cc45d3e7c22463bf2760f89">Error_code</a> *err_code)</td></tr>
<tr class="memdesc:af5471cf5d7a11cf725e291fad962a636"><td class="mdescLeft">&#160;</td><td class="mdescRight">Helper ctor delegated by the 2 <code>public</code> ctors that take <code>Open_or_create</code> or <code>Create_only</code> mode.  <a href="classipc_1_1transport_1_1Posix__mq__handle.html#af5471cf5d7a11cf725e291fad962a636">More...</a><br /></td></tr>
<tr class="separator:af5471cf5d7a11cf725e291fad962a636"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac2cf0213ceaa0a8c621ee2c02c6fbec6"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespaceipc.html#aa3192e586cc45d3e7c22463bf2760f89">Error_code</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1transport_1_1Posix__mq__handle.html#ac2cf0213ceaa0a8c621ee2c02c6fbec6">pipe_setup</a> ()</td></tr>
<tr class="memdesc:ac2cf0213ceaa0a8c621ee2c02c6fbec6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Ctor helper that sets up <code>m_interrupt*</code> pipe items.  <a href="classipc_1_1transport_1_1Posix__mq__handle.html#ac2cf0213ceaa0a8c621ee2c02c6fbec6">More...</a><br /></td></tr>
<tr class="separator:ac2cf0213ceaa0a8c621ee2c02c6fbec6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a47378b13e9dce85a1e1021896c98c3cd"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespaceipc.html#aa3192e586cc45d3e7c22463bf2760f89">Error_code</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1transport_1_1Posix__mq__handle.html#a47378b13e9dce85a1e1021896c98c3cd">epoll_setup</a> ()</td></tr>
<tr class="memdesc:a47378b13e9dce85a1e1021896c98c3cd"><td class="mdescLeft">&#160;</td><td class="mdescRight">Ctor helper that sets up <a class="el" href="classipc_1_1transport_1_1Posix__mq__handle.html#a339b2a92eb51f445752b798e17560bd4" title="epoll_*() handle (.null() if and only if m_mq is null) that is level-triggered to be active (with onl...">m_epoll_hndl_snd</a> and <a class="el" href="classipc_1_1transport_1_1Posix__mq__handle.html#a859113a2c5248287efc55115654ec0ac" title="epoll_*() handle (.null() if and only if m_mq is null) that is level-triggered to be active (with onl...">m_epoll_hndl_rcv</a>.  <a href="classipc_1_1transport_1_1Posix__mq__handle.html#a47378b13e9dce85a1e1021896c98c3cd">More...</a><br /></td></tr>
<tr class="separator:a47378b13e9dce85a1e1021896c98c3cd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab68150c87931f6eb32d0908049e4dac6"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1transport_1_1Posix__mq__handle.html#ab68150c87931f6eb32d0908049e4dac6">set_non_blocking</a> (bool nb, <a class="el" href="namespaceipc.html#aa3192e586cc45d3e7c22463bf2760f89">Error_code</a> *err_code)</td></tr>
<tr class="memdesc:ab68150c87931f6eb32d0908049e4dac6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets <a class="el" href="classipc_1_1transport_1_1Posix__mq__handle.html#ae9465f6fe5c2d36bcbe747fe1bf8d995" title="Underlying MQ handle.">m_mq</a> to blocking or non-blocking and returns <code>true</code> on success and clears <code>*err_code</code>; otherwise returns <code>false</code> and sets truthy <code>*err_code</code>.  <a href="classipc_1_1transport_1_1Posix__mq__handle.html#ab68150c87931f6eb32d0908049e4dac6">More...</a><br /></td></tr>
<tr class="separator:ab68150c87931f6eb32d0908049e4dac6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a244ee5da96550553edca346d77c2a825"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1transport_1_1Posix__mq__handle.html#a244ee5da96550553edca346d77c2a825">handle_mq_api_result</a> (int result, <a class="el" href="namespaceipc.html#aa3192e586cc45d3e7c22463bf2760f89">Error_code</a> *err_code, <a class="el" href="namespaceipc_1_1util.html#ae6ac47812a90d1287c61e0b7de7bc4f5">util::String_view</a> context) const</td></tr>
<tr class="memdesc:a244ee5da96550553edca346d77c2a825"><td class="mdescLeft">&#160;</td><td class="mdescRight">Helper that handles the result of an <code>mq_*()</code> call by logging WARNING(s) on error; setting <code>*err_code</code> on error; clearing it on success.  <a href="classipc_1_1transport_1_1Posix__mq__handle.html#a244ee5da96550553edca346d77c2a825">More...</a><br /></td></tr>
<tr class="separator:a244ee5da96550553edca346d77c2a825"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a98884af2e485268f92b3f5f7c1069291"><td class="memTemplParams" colspan="2">template&lt;bool SND_ELSE_RCV&gt; </td></tr>
<tr class="memitem:a98884af2e485268f92b3f5f7c1069291"><td class="memTemplItemLeft" align="right" valign="top">bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classipc_1_1transport_1_1Posix__mq__handle.html#a98884af2e485268f92b3f5f7c1069291">interrupt_impl</a> ()</td></tr>
<tr class="memdesc:a98884af2e485268f92b3f5f7c1069291"><td class="mdescLeft">&#160;</td><td class="mdescRight">Impl body for <code>interrupt_*()</code>.  <a href="classipc_1_1transport_1_1Posix__mq__handle.html#a98884af2e485268f92b3f5f7c1069291">More...</a><br /></td></tr>
<tr class="separator:a98884af2e485268f92b3f5f7c1069291"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a88e37b4835abbc491df222aebe31f46f"><td class="memTemplParams" colspan="2">template&lt;bool SND_ELSE_RCV&gt; </td></tr>
<tr class="memitem:a88e37b4835abbc491df222aebe31f46f"><td class="memTemplItemLeft" align="right" valign="top">bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classipc_1_1transport_1_1Posix__mq__handle.html#a88e37b4835abbc491df222aebe31f46f">allow_impl</a> ()</td></tr>
<tr class="memdesc:a88e37b4835abbc491df222aebe31f46f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Impl body for <code>allow_*()</code>.  <a href="classipc_1_1transport_1_1Posix__mq__handle.html#a88e37b4835abbc491df222aebe31f46f">More...</a><br /></td></tr>
<tr class="separator:a88e37b4835abbc491df222aebe31f46f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a64e44dd9a0e2ba1f870a231ffcf02fb9"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1transport_1_1Posix__mq__handle.html#a64e44dd9a0e2ba1f870a231ffcf02fb9">wait_impl</a> (<a class="el" href="namespaceipc_1_1util.html#ac66141280c3b7295a86b65209f31cc58">util::Fine_duration</a> timeout_from_now_or_none, bool snd_else_rcv, <a class="el" href="namespaceipc.html#aa3192e586cc45d3e7c22463bf2760f89">Error_code</a> *err_code)</td></tr>
<tr class="memdesc:a64e44dd9a0e2ba1f870a231ffcf02fb9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Impl body for <code>*_sendable()</code> and <code>*_receivable()</code>.  <a href="classipc_1_1transport_1_1Posix__mq__handle.html#a64e44dd9a0e2ba1f870a231ffcf02fb9">More...</a><br /></td></tr>
<tr class="separator:a64e44dd9a0e2ba1f870a231ffcf02fb9"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pri-attribs" name="pri-attribs"></a>
Private Attributes</h2></td></tr>
<tr class="memitem:ae9465f6fe5c2d36bcbe747fe1bf8d995"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespaceipc_1_1transport.html#a7ee4551983d9df16ec16a3139bac50e8">Native_handle</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1transport_1_1Posix__mq__handle.html#ae9465f6fe5c2d36bcbe747fe1bf8d995">m_mq</a></td></tr>
<tr class="memdesc:ae9465f6fe5c2d36bcbe747fe1bf8d995"><td class="mdescLeft">&#160;</td><td class="mdescRight">Underlying MQ handle.  <a href="classipc_1_1transport_1_1Posix__mq__handle.html#ae9465f6fe5c2d36bcbe747fe1bf8d995">More...</a><br /></td></tr>
<tr class="separator:ae9465f6fe5c2d36bcbe747fe1bf8d995"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab6fae02d734897a9149a7b271a146f41"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespaceipc_1_1transport.html#a33de1c256addb3964b839dc2dd407d24">Shared_name</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1transport_1_1Posix__mq__handle.html#ab6fae02d734897a9149a7b271a146f41">m_absolute_name</a></td></tr>
<tr class="memdesc:ab6fae02d734897a9149a7b271a146f41"><td class="mdescLeft">&#160;</td><td class="mdescRight">See <a class="el" href="classipc_1_1transport_1_1Posix__mq__handle.html#a7d62af06a8cea2a821908384ee098125" title="Implements Persistent_mq_handle API: Returns name equal to absolute_name passed to ctor.">absolute_name()</a>.  <a href="classipc_1_1transport_1_1Posix__mq__handle.html#ab6fae02d734897a9149a7b271a146f41">More...</a><br /></td></tr>
<tr class="separator:ab6fae02d734897a9149a7b271a146f41"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a339b2a92eb51f445752b798e17560bd4"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespaceipc_1_1transport.html#a7ee4551983d9df16ec16a3139bac50e8">Native_handle</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1transport_1_1Posix__mq__handle.html#a339b2a92eb51f445752b798e17560bd4">m_epoll_hndl_snd</a></td></tr>
<tr class="memdesc:a339b2a92eb51f445752b798e17560bd4"><td class="mdescLeft">&#160;</td><td class="mdescRight"><code>epoll_*()</code> handle (<code>.null()</code> if and only if <a class="el" href="classipc_1_1transport_1_1Posix__mq__handle.html#ae9465f6fe5c2d36bcbe747fe1bf8d995" title="Underlying MQ handle.">m_mq</a> is null) that is level-triggered to be active (with only 1 event registered) if and only if <a class="el" href="classipc_1_1transport_1_1Posix__mq__handle.html#ae9465f6fe5c2d36bcbe747fe1bf8d995" title="Underlying MQ handle.">m_mq</a> is currently capable of sending at least 1 message (we could push 1+ messages right now).  <a href="classipc_1_1transport_1_1Posix__mq__handle.html#a339b2a92eb51f445752b798e17560bd4">More...</a><br /></td></tr>
<tr class="separator:a339b2a92eb51f445752b798e17560bd4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a859113a2c5248287efc55115654ec0ac"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespaceipc_1_1transport.html#a7ee4551983d9df16ec16a3139bac50e8">Native_handle</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1transport_1_1Posix__mq__handle.html#a859113a2c5248287efc55115654ec0ac">m_epoll_hndl_rcv</a></td></tr>
<tr class="memdesc:a859113a2c5248287efc55115654ec0ac"><td class="mdescLeft">&#160;</td><td class="mdescRight"><code>epoll_*()</code> handle (<code>.null()</code> if and only if <a class="el" href="classipc_1_1transport_1_1Posix__mq__handle.html#ae9465f6fe5c2d36bcbe747fe1bf8d995" title="Underlying MQ handle.">m_mq</a> is null) that is level-triggered to be active (with only 1 event registered) if and only if <a class="el" href="classipc_1_1transport_1_1Posix__mq__handle.html#ae9465f6fe5c2d36bcbe747fe1bf8d995" title="Underlying MQ handle.">m_mq</a> is currently storing at least 1 message (we could pop 1+ messages right now).  <a href="classipc_1_1transport_1_1Posix__mq__handle.html#a859113a2c5248287efc55115654ec0ac">More...</a><br /></td></tr>
<tr class="separator:a859113a2c5248287efc55115654ec0ac"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a75eac3aa00f897013338aebbfa00b7e2"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1transport_1_1Posix__mq__handle.html#a75eac3aa00f897013338aebbfa00b7e2">m_interrupting_snd</a></td></tr>
<tr class="memdesc:a75eac3aa00f897013338aebbfa00b7e2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Starting at <code>false</code>, this is made <code>true</code> via <a class="el" href="classipc_1_1transport_1_1Posix__mq__handle.html#a0afe8a636902116223b4f33f081119df" title="Implements Persistent_mq_handle API: Turn on preemptive/concurrent interruption of blocking-sends and...">interrupt_sends()</a>, and back by <a class="el" href="classipc_1_1transport_1_1Posix__mq__handle.html#a01d842eb304fff361d72a090113ffc9f" title="Implements Persistent_mq_handle API: Turn off preemptive/concurrent interruption of blocking-sends an...">allow_sends()</a>; acts as a guard against doing it when already in effect.  <a href="classipc_1_1transport_1_1Posix__mq__handle.html#a75eac3aa00f897013338aebbfa00b7e2">More...</a><br /></td></tr>
<tr class="separator:a75eac3aa00f897013338aebbfa00b7e2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae1ec26a4ea667cfc04d4de889b14ed68"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1transport_1_1Posix__mq__handle.html#ae1ec26a4ea667cfc04d4de889b14ed68">m_interrupting_rcv</a></td></tr>
<tr class="memdesc:ae1ec26a4ea667cfc04d4de889b14ed68"><td class="mdescLeft">&#160;</td><td class="mdescRight">Other-direction counterpart to <a class="el" href="classipc_1_1transport_1_1Posix__mq__handle.html#a75eac3aa00f897013338aebbfa00b7e2" title="Starting at false, this is made true via interrupt_sends(), and back by allow_sends(); acts as a guar...">m_interrupting_snd</a>.  <a href="classipc_1_1transport_1_1Posix__mq__handle.html#ae1ec26a4ea667cfc04d4de889b14ed68">More...</a><br /></td></tr>
<tr class="separator:ae1ec26a4ea667cfc04d4de889b14ed68"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aeda588bb49f6089bb3c2f7043191006c"><td class="memItemLeft" align="right" valign="top">flow::util::Task_engine&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1transport_1_1Posix__mq__handle.html#aeda588bb49f6089bb3c2f7043191006c">m_nb_task_engine</a></td></tr>
<tr class="memdesc:aeda588bb49f6089bb3c2f7043191006c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Never used for <code>.run()</code> or <code>.async()</code> &ndash; just so we can construct <a class="el" href="classipc_1_1transport_1_1Posix__mq__handle.html#a0cf6cf0cd88b34cfd7dd93d66e383f95" title="Short-hand for anonymous pipe read end.">Pipe_reader</a>, <a class="el" href="classipc_1_1transport_1_1Posix__mq__handle.html#a4bf3bfa8192e7d73e52054c63919187a" title="Short-hand for anonymous pipe write end.">Pipe_writer</a>.  <a href="classipc_1_1transport_1_1Posix__mq__handle.html#aeda588bb49f6089bb3c2f7043191006c">More...</a><br /></td></tr>
<tr class="separator:aeda588bb49f6089bb3c2f7043191006c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae77e18be8f9e7de1fba382572ce18c99"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classipc_1_1transport_1_1Posix__mq__handle.html#a4bf3bfa8192e7d73e52054c63919187a">Pipe_writer</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1transport_1_1Posix__mq__handle.html#ae77e18be8f9e7de1fba382572ce18c99">m_interrupter_snd</a></td></tr>
<tr class="memdesc:ae77e18be8f9e7de1fba382572ce18c99"><td class="mdescLeft">&#160;</td><td class="mdescRight">A byte is written to this end by <a class="el" href="classipc_1_1transport_1_1Posix__mq__handle.html#a0afe8a636902116223b4f33f081119df" title="Implements Persistent_mq_handle API: Turn on preemptive/concurrent interruption of blocking-sends and...">interrupt_sends()</a> to make it readable for the poll-wait in <a class="el" href="classipc_1_1transport_1_1Posix__mq__handle.html#a64e44dd9a0e2ba1f870a231ffcf02fb9" title="Impl body for *_sendable() and *_receivable().">wait_impl()</a> indicating that <a class="el" href="classipc_1_1transport_1_1Posix__mq__handle.html#a75eac3aa00f897013338aebbfa00b7e2" title="Starting at false, this is made true via interrupt_sends(), and back by allow_sends(); acts as a guar...">m_interrupting_snd</a> mode is on.  <a href="classipc_1_1transport_1_1Posix__mq__handle.html#ae77e18be8f9e7de1fba382572ce18c99">More...</a><br /></td></tr>
<tr class="separator:ae77e18be8f9e7de1fba382572ce18c99"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a28e4beb79afeac4832e6b0e1118148e9"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classipc_1_1transport_1_1Posix__mq__handle.html#a0cf6cf0cd88b34cfd7dd93d66e383f95">Pipe_reader</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1transport_1_1Posix__mq__handle.html#a28e4beb79afeac4832e6b0e1118148e9">m_interrupt_detector_snd</a></td></tr>
<tr class="memdesc:a28e4beb79afeac4832e6b0e1118148e9"><td class="mdescLeft">&#160;</td><td class="mdescRight">A byte is read from this end by <a class="el" href="classipc_1_1transport_1_1Posix__mq__handle.html#a01d842eb304fff361d72a090113ffc9f" title="Implements Persistent_mq_handle API: Turn off preemptive/concurrent interruption of blocking-sends an...">allow_sends()</a> to make it not-readable for the poll-wait in <a class="el" href="classipc_1_1transport_1_1Posix__mq__handle.html#a64e44dd9a0e2ba1f870a231ffcf02fb9" title="Impl body for *_sendable() and *_receivable().">wait_impl()</a> indicating that <a class="el" href="classipc_1_1transport_1_1Posix__mq__handle.html#a75eac3aa00f897013338aebbfa00b7e2" title="Starting at false, this is made true via interrupt_sends(), and back by allow_sends(); acts as a guar...">m_interrupting_snd</a> mode is off; and <a class="el" href="classipc_1_1transport_1_1Posix__mq__handle.html#a64e44dd9a0e2ba1f870a231ffcf02fb9" title="Impl body for *_sendable() and *_receivable().">wait_impl()</a> poll-waits on this along with <a class="el" href="classipc_1_1transport_1_1Posix__mq__handle.html#ae9465f6fe5c2d36bcbe747fe1bf8d995" title="Underlying MQ handle.">m_mq</a> &ndash; if it is readable, then the mode is on.  <a href="classipc_1_1transport_1_1Posix__mq__handle.html#a28e4beb79afeac4832e6b0e1118148e9">More...</a><br /></td></tr>
<tr class="separator:a28e4beb79afeac4832e6b0e1118148e9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5b206bcb3928bac2afb08daa0bc699fc"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classipc_1_1transport_1_1Posix__mq__handle.html#a4bf3bfa8192e7d73e52054c63919187a">Pipe_writer</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1transport_1_1Posix__mq__handle.html#a5b206bcb3928bac2afb08daa0bc699fc">m_interrupter_rcv</a></td></tr>
<tr class="memdesc:a5b206bcb3928bac2afb08daa0bc699fc"><td class="mdescLeft">&#160;</td><td class="mdescRight">Other-direction counterpart to <a class="el" href="classipc_1_1transport_1_1Posix__mq__handle.html#ae77e18be8f9e7de1fba382572ce18c99" title="A byte is written to this end by interrupt_sends() to make it readable for the poll-wait in wait_impl...">m_interrupter_snd</a>.  <a href="classipc_1_1transport_1_1Posix__mq__handle.html#a5b206bcb3928bac2afb08daa0bc699fc">More...</a><br /></td></tr>
<tr class="separator:a5b206bcb3928bac2afb08daa0bc699fc"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a41b284b4476d7b51feceb57f4d0f6ddc"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classipc_1_1transport_1_1Posix__mq__handle.html#a0cf6cf0cd88b34cfd7dd93d66e383f95">Pipe_reader</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1transport_1_1Posix__mq__handle.html#a41b284b4476d7b51feceb57f4d0f6ddc">m_interrupt_detector_rcv</a></td></tr>
<tr class="memdesc:a41b284b4476d7b51feceb57f4d0f6ddc"><td class="mdescLeft">&#160;</td><td class="mdescRight">Other-direction counterpart to <a class="el" href="classipc_1_1transport_1_1Posix__mq__handle.html#a28e4beb79afeac4832e6b0e1118148e9" title="A byte is read from this end by allow_sends() to make it not-readable for the poll-wait in wait_impl(...">m_interrupt_detector_snd</a>.  <a href="classipc_1_1transport_1_1Posix__mq__handle.html#a41b284b4476d7b51feceb57f4d0f6ddc">More...</a><br /></td></tr>
<tr class="separator:a41b284b4476d7b51feceb57f4d0f6ddc"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="friends" name="friends"></a>
Friends</h2></td></tr>
<tr class="memitem:a65015c97813a6609da035fe86d1a36c0"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1transport_1_1Posix__mq__handle.html#a65015c97813a6609da035fe86d1a36c0">swap</a> (<a class="el" href="classipc_1_1transport_1_1Posix__mq__handle.html">Posix_mq_handle</a> &amp;val1, <a class="el" href="classipc_1_1transport_1_1Posix__mq__handle.html">Posix_mq_handle</a> &amp;val2)</td></tr>
<tr class="memdesc:a65015c97813a6609da035fe86d1a36c0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Implements <a class="el" href="classipc_1_1transport_1_1Persistent__mq__handle.html" title="A documentation-only concept defining the behavior of an object representing a light-weight handle to...">Persistent_mq_handle</a> related concept: Swaps two objects.  <a href="classipc_1_1transport_1_1Posix__mq__handle.html#a65015c97813a6609da035fe86d1a36c0">More...</a><br /></td></tr>
<tr class="separator:a65015c97813a6609da035fe86d1a36c0"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="related" name="related"></a>
Related Functions</h2></td></tr>
<tr><td class="ititle" colspan="2"><p >(Note that these are not member functions.) </p>
</td></tr>
<tr class="memitem:a8fb9256b66ad3dfdf742de66223466d7"><td class="memItemLeft" align="right" valign="top">std::ostream &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1transport_1_1Posix__mq__handle.html#a8fb9256b66ad3dfdf742de66223466d7">operator&lt;&lt;</a> (std::ostream &amp;os, const <a class="el" href="classipc_1_1transport_1_1Posix__mq__handle.html">Posix_mq_handle</a> &amp;val)</td></tr>
<tr class="memdesc:a8fb9256b66ad3dfdf742de66223466d7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Prints string representation of the given <a class="el" href="classipc_1_1transport_1_1Posix__mq__handle.html" title="Implements the Persistent_mq_handle concept by wrapping the POSIX message queue API (see man mq_overv...">Posix_mq_handle</a> to the given <code>ostream</code>.  <a href="classipc_1_1transport_1_1Posix__mq__handle.html#a8fb9256b66ad3dfdf742de66223466d7">More...</a><br /></td></tr>
<tr class="separator:a8fb9256b66ad3dfdf742de66223466d7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a65015c97813a6609da035fe86d1a36c0"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1transport_1_1Posix__mq__handle.html#a65015c97813a6609da035fe86d1a36c0">swap</a> (<a class="el" href="classipc_1_1transport_1_1Posix__mq__handle.html">Posix_mq_handle</a> &amp;val1, <a class="el" href="classipc_1_1transport_1_1Posix__mq__handle.html">Posix_mq_handle</a> &amp;val2)</td></tr>
<tr class="memdesc:a65015c97813a6609da035fe86d1a36c0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Implements <a class="el" href="classipc_1_1transport_1_1Persistent__mq__handle.html" title="A documentation-only concept defining the behavior of an object representing a light-weight handle to...">Persistent_mq_handle</a> related concept: Swaps two objects.  <a href="classipc_1_1transport_1_1Posix__mq__handle.html#a65015c97813a6609da035fe86d1a36c0">More...</a><br /></td></tr>
<tr class="separator:a65015c97813a6609da035fe86d1a36c0"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p >Implements the <a class="el" href="classipc_1_1transport_1_1Persistent__mq__handle.html" title="A documentation-only concept defining the behavior of an object representing a light-weight handle to...">Persistent_mq_handle</a> concept by wrapping the POSIX message queue API (see <code>man mq_overview</code>). </p>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="classipc_1_1transport_1_1Persistent__mq__handle.html" title="A documentation-only concept defining the behavior of an object representing a light-weight handle to...">Persistent_mq_handle</a>: implemented concept.</dd></dl>
<p>Reminder: This is available publicly in case it is useful; but it is more likely one would use a <a class="el" href="classipc_1_1transport_1_1Blob__stream__mq__sender.html" title="Implements Blob_sender concept by using an adopted Persistent_mq_handle MQ handle to an MQ (message q...">Blob_stream_mq_sender</a> or <a class="el" href="classipc_1_1transport_1_1Blob__stream__mq__receiver.html" title="Implements Blob_receiver concept by using an adopted Persistent_mq_handle MQ handle to an MQ (message...">Blob_stream_mq_receiver</a> which provides a far more convenient boost.asio-like async-capable API. It uses class(es) like this one in its impl.</p>
<p ><a class="el" href="classipc_1_1transport_1_1Posix__mq__handle.html#a62bc5410c9928099dff46ba021acb879" title="Implements Persistent_mq_handle API: Returns the stored native MQ handle; null if not open.">native_handle()</a> returns the underlying MQ descriptor; in Linux (the only OS supported as of this writing) this happens to be an FD; and as an FD it can (according to <code>man mq_overview</code>) participate in <code>epoll/poll/select()</code>. It is simple to wrap this descriptor in a boost.asio <code>posix::descriptor</code>. Having done that, one can <code>async_wait()</code> on it, awaiting writability and readability in async fashion not supported by the <a class="el" href="classipc_1_1transport_1_1Persistent__mq__handle.html" title="A documentation-only concept defining the behavior of an object representing a light-weight handle to...">Persistent_mq_handle</a> concept. Accordingly <a class="el" href="classipc_1_1transport_1_1Posix__mq__handle.html#af4a21d3354b44d99aee79af5b1464f10" title="Implements concept API. Contrast this value with Bipc_mq_handle::S_HAS_NATIVE_HANDLE.">Posix_mq_handle::S_HAS_NATIVE_HANDLE</a> is <code>true</code>.</p>
<h3>Implementation</h3>
<p >I (ygoldfel) wrote this immediately after <a class="el" href="classipc_1_1transport_1_1Bipc__mq__handle.html" title="Implements the Persistent_mq_handle concept by thinly wrapping bipc::message_queue,...">Bipc_mq_handle</a>. Notably the thing that thinly wraps, <code>bipc::message_queue</code>, appears to be heavily influenced by the POSIX MQ API in terms of its API and functionality. So the implementation here is conceptually similar. </p>

<p class="definition">Definition at line <a class="el" href="posix__mq__handle_8hpp_source.html#l00061">61</a> of file <a class="el" href="posix__mq__handle_8hpp_source.html">posix_mq_handle.hpp</a>.</p>
</div><h2 class="groupheader">Member Typedef Documentation</h2>
<a id="a0cf6cf0cd88b34cfd7dd93d66e383f95" name="a0cf6cf0cd88b34cfd7dd93d66e383f95"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0cf6cf0cd88b34cfd7dd93d66e383f95">&#9670;&nbsp;</a></span>Pipe_reader</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">using <a class="el" href="classipc_1_1transport_1_1Posix__mq__handle.html#a0cf6cf0cd88b34cfd7dd93d66e383f95">ipc::transport::Posix_mq_handle::Pipe_reader</a> =  <a class="el" href="namespaceipc_1_1util.html#aaf368acf8243bb25de3eef4e836c15de">util::Pipe_reader</a></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Short-hand for anonymous pipe read end. </p>

<p class="definition">Definition at line <a class="el" href="posix__mq__handle_8hpp_source.html#l00509">509</a> of file <a class="el" href="posix__mq__handle_8hpp_source.html">posix_mq_handle.hpp</a>.</p>

</div>
</div>
<a id="a4bf3bfa8192e7d73e52054c63919187a" name="a4bf3bfa8192e7d73e52054c63919187a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a4bf3bfa8192e7d73e52054c63919187a">&#9670;&nbsp;</a></span>Pipe_writer</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">using <a class="el" href="classipc_1_1transport_1_1Posix__mq__handle.html#a4bf3bfa8192e7d73e52054c63919187a">ipc::transport::Posix_mq_handle::Pipe_writer</a> =  <a class="el" href="namespaceipc_1_1util.html#a844d5ca9c17b672644fc8d9dbe758db0">util::Pipe_writer</a></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Short-hand for anonymous pipe write end. </p>

<p class="definition">Definition at line <a class="el" href="posix__mq__handle_8hpp_source.html#l00506">506</a> of file <a class="el" href="posix__mq__handle_8hpp_source.html">posix_mq_handle.hpp</a>.</p>

</div>
</div>
<h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a id="a6f5c4dfbc0427f2a8456fb589e5f63d3" name="a6f5c4dfbc0427f2a8456fb589e5f63d3"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6f5c4dfbc0427f2a8456fb589e5f63d3">&#9670;&nbsp;</a></span>Posix_mq_handle() <span class="overload">[1/6]</span></h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">ipc::transport::Posix_mq_handle::Posix_mq_handle </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Implements <a class="el" href="classipc_1_1transport_1_1Persistent__mq__handle.html" title="A documentation-only concept defining the behavior of an object representing a light-weight handle to...">Persistent_mq_handle</a> API: Construct null handle. </p>

<p class="definition">Definition at line <a class="el" href="posix__mq__handle_8cpp_source.html#l00048">48</a> of file <a class="el" href="posix__mq__handle_8cpp_source.html">posix_mq_handle.cpp</a>.</p>

</div>
</div>
<a id="a2aa595c11d407fcf343807e64a150be5" name="a2aa595c11d407fcf343807e64a150be5"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2aa595c11d407fcf343807e64a150be5">&#9670;&nbsp;</a></span>Posix_mq_handle() <span class="overload">[2/6]</span></h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">ipc::transport::Posix_mq_handle::Posix_mq_handle </td>
          <td>(</td>
          <td class="paramtype">flow::log::Logger *&#160;</td>
          <td class="paramname"><em>logger_ptr</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="namespaceipc_1_1transport.html#a33de1c256addb3964b839dc2dd407d24">Shared_name</a> &amp;&#160;</td>
          <td class="paramname"><em>absolute_name</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="namespaceipc_1_1util.html#a9d84c2bab504e6de32b20c77ca9723a2">util::Create_only</a>&#160;</td>
          <td class="paramname"><em>mode_tag</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&#160;</td>
          <td class="paramname"><em>max_n_msg</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&#160;</td>
          <td class="paramname"><em>max_msg_sz</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="namespaceipc_1_1util.html#a1b398ae730d1e6040687cb2397115152">util::Permissions</a> &amp;&#160;</td>
          <td class="paramname"><em>perms</em> = <code><a class="el" href="namespaceipc_1_1util.html#a1b398ae730d1e6040687cb2397115152">util::Permissions</a>()</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="namespaceipc.html#aa3192e586cc45d3e7c22463bf2760f89">Error_code</a> *&#160;</td>
          <td class="paramname"><em>err_code</em> = <code>0</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">explicit</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Implements <a class="el" href="classipc_1_1transport_1_1Persistent__mq__handle.html" title="A documentation-only concept defining the behavior of an object representing a light-weight handle to...">Persistent_mq_handle</a> API: Construct handle to non-existing named MQ, creating it first. </p>
<p >If it already exists, it is an error.</p>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="classipc_1_1transport_1_1Persistent__mq__handle.html#a22abfaa801a9e2f974a8cd179544d19a" title="Construct null handle, suitable only for being subsequently moved-to or destroyed.">Persistent_mq_handle::Persistent_mq_handle()</a>: implemented concept.</dd></dl>
<p><code>max_n_msg</code> and <code>max_msg_sz</code> are subject to certain OS limits, according to <code>man mq_overview</code>. Watch out for those: we have no control over them here. The <code>man</code> page should give you the necessary information.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">logger_ptr</td><td>See above. </td></tr>
    <tr><td class="paramname">absolute_name</td><td>See above. </td></tr>
    <tr><td class="paramname">mode_tag</td><td>See above. </td></tr>
    <tr><td class="paramname">perms</td><td>See above. Reminder: Suggest the use of <a class="el" href="namespaceipc_1_1util.html#abda2ce5bcdbc26ca63d667b87818439c" title="Maps general Permissions_level specifier to low-level Permissions value, when the underlying resource...">util::shared_resource_permissions()</a> to translate from one of a small handful of levels of access; these apply almost always in practice. </td></tr>
    <tr><td class="paramname">max_n_msg</td><td>See above. </td></tr>
    <tr><td class="paramname">max_msg_sz</td><td>See above. </td></tr>
    <tr><td class="paramname">err_code</td><td>See above. </td></tr>
  </table>
  </dd>
</dl>

<p class="definition">Definition at line <a class="el" href="posix__mq__handle_8cpp_source.html#l00284">284</a> of file <a class="el" href="posix__mq__handle_8cpp_source.html">posix_mq_handle.cpp</a>.</p>

</div>
</div>
<a id="ab6bb78f2297f6f7c801e200af963574e" name="ab6bb78f2297f6f7c801e200af963574e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab6bb78f2297f6f7c801e200af963574e">&#9670;&nbsp;</a></span>Posix_mq_handle() <span class="overload">[3/6]</span></h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">ipc::transport::Posix_mq_handle::Posix_mq_handle </td>
          <td>(</td>
          <td class="paramtype">flow::log::Logger *&#160;</td>
          <td class="paramname"><em>logger_ptr</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="namespaceipc_1_1transport.html#a33de1c256addb3964b839dc2dd407d24">Shared_name</a> &amp;&#160;</td>
          <td class="paramname"><em>absolute_name</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="namespaceipc_1_1util.html#a9571de958538d7a4a8649bbfecfac0b9">util::Open_or_create</a>&#160;</td>
          <td class="paramname"><em>mode_tag</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&#160;</td>
          <td class="paramname"><em>max_n_msg_on_create</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&#160;</td>
          <td class="paramname"><em>max_msg_sz_on_create</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="namespaceipc_1_1util.html#a1b398ae730d1e6040687cb2397115152">util::Permissions</a> &amp;&#160;</td>
          <td class="paramname"><em>perms_on_create</em> = <code><a class="el" href="namespaceipc_1_1util.html#a1b398ae730d1e6040687cb2397115152">util::Permissions</a>()</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="namespaceipc.html#aa3192e586cc45d3e7c22463bf2760f89">Error_code</a> *&#160;</td>
          <td class="paramname"><em>err_code</em> = <code>0</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">explicit</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Implements <a class="el" href="classipc_1_1transport_1_1Persistent__mq__handle.html" title="A documentation-only concept defining the behavior of an object representing a light-weight handle to...">Persistent_mq_handle</a> API: Construct handle to existing named MQ, or else if it does not exist creates it first and opens it (atomically). </p>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="classipc_1_1transport_1_1Persistent__mq__handle.html#a22abfaa801a9e2f974a8cd179544d19a" title="Construct null handle, suitable only for being subsequently moved-to or destroyed.">Persistent_mq_handle::Persistent_mq_handle()</a>: implemented concept.</dd></dl>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">logger_ptr</td><td>See above. </td></tr>
    <tr><td class="paramname">absolute_name</td><td>See above. </td></tr>
    <tr><td class="paramname">mode_tag</td><td>See above. </td></tr>
    <tr><td class="paramname">perms_on_create</td><td>See above. Reminder: Suggest the use of <a class="el" href="namespaceipc_1_1util.html#abda2ce5bcdbc26ca63d667b87818439c" title="Maps general Permissions_level specifier to low-level Permissions value, when the underlying resource...">util::shared_resource_permissions()</a> to translate from one of a small handful of levels of access; these apply almost always in practice. </td></tr>
    <tr><td class="paramname">max_n_msg_on_create</td><td>See above. </td></tr>
    <tr><td class="paramname">max_msg_sz_on_create</td><td>See above. </td></tr>
    <tr><td class="paramname">err_code</td><td>See above. </td></tr>
  </table>
  </dd>
</dl>

<p class="definition">Definition at line <a class="el" href="posix__mq__handle_8cpp_source.html#l00292">292</a> of file <a class="el" href="posix__mq__handle_8cpp_source.html">posix_mq_handle.cpp</a>.</p>

</div>
</div>
<a id="a01d1655e59059fcec0c983d8dbd8f991" name="a01d1655e59059fcec0c983d8dbd8f991"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a01d1655e59059fcec0c983d8dbd8f991">&#9670;&nbsp;</a></span>Posix_mq_handle() <span class="overload">[4/6]</span></h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">ipc::transport::Posix_mq_handle::Posix_mq_handle </td>
          <td>(</td>
          <td class="paramtype">flow::log::Logger *&#160;</td>
          <td class="paramname"><em>logger_ptr</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="namespaceipc_1_1transport.html#a33de1c256addb3964b839dc2dd407d24">Shared_name</a> &amp;&#160;</td>
          <td class="paramname"><em>absolute_name</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="namespaceipc_1_1util.html#a3e03491b5b2b5fac26551a220946d6e5">util::Open_only</a>&#160;</td>
          <td class="paramname"><em>mode_tag</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="namespaceipc.html#aa3192e586cc45d3e7c22463bf2760f89">Error_code</a> *&#160;</td>
          <td class="paramname"><em>err_code</em> = <code>0</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">explicit</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Implements <a class="el" href="classipc_1_1transport_1_1Persistent__mq__handle.html" title="A documentation-only concept defining the behavior of an object representing a light-weight handle to...">Persistent_mq_handle</a> API: Construct handle to existing named MQ. </p>
<p >If it does not exist, it is an error.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">logger_ptr</td><td>See above. </td></tr>
    <tr><td class="paramname">absolute_name</td><td>See above. </td></tr>
    <tr><td class="paramname">mode_tag</td><td>See above. </td></tr>
    <tr><td class="paramname">err_code</td><td>See above. </td></tr>
  </table>
  </dd>
</dl>

<p class="definition">Definition at line <a class="el" href="posix__mq__handle_8cpp_source.html#l00300">300</a> of file <a class="el" href="posix__mq__handle_8cpp_source.html">posix_mq_handle.cpp</a>.</p>

<p class="reference">References <a class="el" href="posix__mq__handle_8cpp_source.html#l01357">absolute_name()</a>, <a class="el" href="posix__mq__handle_8cpp_source.html#l00404">epoll_setup()</a>, <a class="el" href="posix__mq__handle_8hpp_source.html#l00627">m_mq</a>, <a class="el" href="native__handle_8hpp_source.html#l00085">ipc::util::Native_handle::m_native_handle</a>, <a class="el" href="native__handle_8cpp_source.html#l00061">ipc::util::Native_handle::null()</a>, <a class="el" href="posix__mq__handle_8cpp_source.html#l00377">pipe_setup()</a>, and <a class="el" href="posix__mq__handle_8cpp_source.html#l00660">set_non_blocking()</a>.</p>
<div class="dynheader">
Here is the call graph for this function:</div>
<div class="dyncontent">
<div class="center"><iframe scrolling="no" frameborder="0" src="classipc_1_1transport_1_1Posix__mq__handle_a01d1655e59059fcec0c983d8dbd8f991_cgraph.svg" width="620" height="263"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
</div>
</div>

</div>
</div>
<a id="ab52cab86bdc869577e8f0722c6eb3097" name="ab52cab86bdc869577e8f0722c6eb3097"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab52cab86bdc869577e8f0722c6eb3097">&#9670;&nbsp;</a></span>Posix_mq_handle() <span class="overload">[5/6]</span></h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">ipc::transport::Posix_mq_handle::Posix_mq_handle </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classipc_1_1transport_1_1Posix__mq__handle.html">Posix_mq_handle</a> &amp;&amp;&#160;</td>
          <td class="paramname"><em>src</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Implements <a class="el" href="classipc_1_1transport_1_1Persistent__mq__handle.html" title="A documentation-only concept defining the behavior of an object representing a light-weight handle to...">Persistent_mq_handle</a> API: Constructs handle from the source handle while making the latter as-if default-cted. </p>
<p >Reminder, informally: This is a light-weight op.</p>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="classipc_1_1transport_1_1Persistent__mq__handle.html#a22abfaa801a9e2f974a8cd179544d19a" title="Construct null handle, suitable only for being subsequently moved-to or destroyed.">Persistent_mq_handle::Persistent_mq_handle()</a>: implemented concept.</dd></dl>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">src</td><td>See above. </td></tr>
  </table>
  </dd>
</dl>

<p class="definition">Definition at line <a class="el" href="posix__mq__handle_8cpp_source.html#l00495">495</a> of file <a class="el" href="posix__mq__handle_8cpp_source.html">posix_mq_handle.cpp</a>.</p>

<p class="reference">References <a class="el" href="posix__mq__handle_8cpp_source.html#l00525">operator=()</a>.</p>
<div class="dynheader">
Here is the call graph for this function:</div>
<div class="dyncontent">
<div class="center"><iframe scrolling="no" frameborder="0" src="classipc_1_1transport_1_1Posix__mq__handle_ab52cab86bdc869577e8f0722c6eb3097_cgraph.svg" width="550" height="96"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
</div>
</div>

</div>
</div>
<a id="aa8e2e4c19715424d35b4572a29de126b" name="aa8e2e4c19715424d35b4572a29de126b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa8e2e4c19715424d35b4572a29de126b">&#9670;&nbsp;</a></span>~Posix_mq_handle()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">ipc::transport::Posix_mq_handle::~Posix_mq_handle </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Implements <a class="el" href="classipc_1_1transport_1_1Persistent__mq__handle.html" title="A documentation-only concept defining the behavior of an object representing a light-weight handle to...">Persistent_mq_handle</a> API: Destroys this handle (or no-op if no handle was successfully constructed, or if it's a moved-from or default-cted handle). </p>
<p >Reminder: The underlying MQ (if any) is <em>not</em> destroyed and can be attached-to by another handle.</p>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="classipc_1_1transport_1_1Persistent__mq__handle.html#a1fbb936f8f80fedcb1227794ef0a451b" title="Destroys this handle (or no-op if no handle was successfully constructed, or if it&#39;s a moved-from or ...">Persistent_mq_handle::~Persistent_mq_handle()</a>: implemented concept. </dd></dl>

<p class="definition">Definition at line <a class="el" href="posix__mq__handle_8cpp_source.html#l00501">501</a> of file <a class="el" href="posix__mq__handle_8cpp_source.html">posix_mq_handle.cpp</a>.</p>

<p class="reference">References <a class="el" href="posix__mq__handle_8hpp_source.html#l00644">m_epoll_hndl_rcv</a>, <a class="el" href="posix__mq__handle_8hpp_source.html#l00637">m_epoll_hndl_snd</a>, <a class="el" href="posix__mq__handle_8hpp_source.html#l00627">m_mq</a>, <a class="el" href="native__handle_8hpp_source.html#l00085">ipc::util::Native_handle::m_native_handle</a>, and <a class="el" href="native__handle_8cpp_source.html#l00061">ipc::util::Native_handle::null()</a>.</p>
<div class="dynheader">
Here is the call graph for this function:</div>
<div class="dyncontent">
<div class="center"><iframe scrolling="no" frameborder="0" src="classipc_1_1transport_1_1Posix__mq__handle_aa8e2e4c19715424d35b4572a29de126b_cgraph.svg" width="363" height="59"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
</div>
</div>

</div>
</div>
<a id="af5471cf5d7a11cf725e291fad962a636" name="af5471cf5d7a11cf725e291fad962a636"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af5471cf5d7a11cf725e291fad962a636">&#9670;&nbsp;</a></span>Posix_mq_handle() <span class="overload">[6/6]</span></h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename Mode_tag &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">ipc::transport::Posix_mq_handle::Posix_mq_handle </td>
          <td>(</td>
          <td class="paramtype">Mode_tag&#160;</td>
          <td class="paramname"><em>mode_tag</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">flow::log::Logger *&#160;</td>
          <td class="paramname"><em>logger_ptr</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="namespaceipc_1_1transport.html#a33de1c256addb3964b839dc2dd407d24">Shared_name</a> &amp;&#160;</td>
          <td class="paramname"><em>absolute_name</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&#160;</td>
          <td class="paramname"><em>max_n_msg_on_create</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&#160;</td>
          <td class="paramname"><em>max_msg_sz_on_create</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="namespaceipc_1_1util.html#a1b398ae730d1e6040687cb2397115152">util::Permissions</a> &amp;&#160;</td>
          <td class="paramname"><em>perms_on_create</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="namespaceipc.html#aa3192e586cc45d3e7c22463bf2760f89">Error_code</a> *&#160;</td>
          <td class="paramname"><em>err_code</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">explicit</span><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Helper ctor delegated by the 2 <code>public</code> ctors that take <code>Open_or_create</code> or <code>Create_only</code> mode. </p>
<dl class="tparams"><dt>Template Parameters</dt><dd>
  <table class="tparams">
    <tr><td class="paramname">Mode_tag</td><td>Either <a class="el" href="namespaceipc_1_1util.html#a9571de958538d7a4a8649bbfecfac0b9" title="Tag type indicating an atomic open-if-exists-else-create operation.">util::Open_or_create</a> or <a class="el" href="namespaceipc_1_1util.html#a9d84c2bab504e6de32b20c77ca9723a2" title="Tag type indicating a create-unless-exists-else-fail operation.">util::Create_only</a>. </td></tr>
  </table>
  </dd>
</dl>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">logger_ptr</td><td>See <code>public</code> ctors. </td></tr>
    <tr><td class="paramname">absolute_name</td><td>See <code>public</code> ctors. </td></tr>
    <tr><td class="paramname">mode_tag</td><td>See <code>public</code> ctors. </td></tr>
    <tr><td class="paramname">max_n_msg_on_create</td><td>See <code>public</code> ctors. </td></tr>
    <tr><td class="paramname">max_msg_sz_on_create</td><td>See <code>public</code> ctors. </td></tr>
    <tr><td class="paramname">perms_on_create</td><td>See <code>public</code> ctors. </td></tr>
    <tr><td class="paramname">err_code</td><td>See <code>public</code> ctors. </td></tr>
  </table>
  </dd>
</dl>

<p class="definition">Definition at line <a class="el" href="posix__mq__handle_8cpp_source.html#l00060">60</a> of file <a class="el" href="posix__mq__handle_8cpp_source.html">posix_mq_handle.cpp</a>.</p>

<p class="reference">References <a class="el" href="posix__mq__handle_8cpp_source.html#l01357">absolute_name()</a>, <a class="el" href="posix__mq__handle_8cpp_source.html#l00404">epoll_setup()</a>, <a class="el" href="posix__mq__handle_8hpp_source.html#l00627">m_mq</a>, <a class="el" href="native__handle_8hpp_source.html#l00085">ipc::util::Native_handle::m_native_handle</a>, <a class="el" href="native__handle_8cpp_source.html#l00061">ipc::util::Native_handle::null()</a>, <a class="el" href="posix__mq__handle_8cpp_source.html#l00377">pipe_setup()</a>, <a class="el" href="posix__mq__handle_8cpp_source.html#l00660">set_non_blocking()</a>, and <a class="el" href="ipc__core_2src_2ipc_2util_2util_8cpp_source.html#l00046">ipc::util::set_resource_permissions()</a>.</p>
<div class="dynheader">
Here is the call graph for this function:</div>
<div class="dyncontent">
<div class="center"><iframe scrolling="no" frameborder="0" src="classipc_1_1transport_1_1Posix__mq__handle_af5471cf5d7a11cf725e291fad962a636_cgraph.svg" width="620" height="343"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
</div>
</div>

</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a id="a7d62af06a8cea2a821908384ee098125" name="a7d62af06a8cea2a821908384ee098125"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7d62af06a8cea2a821908384ee098125">&#9670;&nbsp;</a></span>absolute_name()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">const <a class="el" href="namespaceipc_1_1transport.html#a33de1c256addb3964b839dc2dd407d24">Shared_name</a> &amp; ipc::transport::Posix_mq_handle::absolute_name </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Implements <a class="el" href="classipc_1_1transport_1_1Persistent__mq__handle.html" title="A documentation-only concept defining the behavior of an object representing a light-weight handle to...">Persistent_mq_handle</a> API: Returns name equal to <code>absolute_name</code> passed to ctor. </p>
<dl class="section return"><dt>Returns</dt><dd>See above. </dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="classipc_1_1transport_1_1Persistent__mq__handle.html#a5ef74ca74a9d985710af974fd6518940" title="Returns name equal to absolute_name passed to ctor.">Persistent_mq_handle::absolute_name()</a>: implemented concept. </dd></dl>

<p class="definition">Definition at line <a class="el" href="posix__mq__handle_8cpp_source.html#l01357">1357</a> of file <a class="el" href="posix__mq__handle_8cpp_source.html">posix_mq_handle.cpp</a>.</p>

<p class="reference">References <a class="el" href="posix__mq__handle_8hpp_source.html#l00630">m_absolute_name</a>.</p>

<p class="reference">Referenced by <a class="el" href="posix__mq__handle_8cpp_source.html#l01362">operator&lt;&lt;()</a>, <a class="el" href="posix__mq__handle_8cpp_source.html#l00377">pipe_setup()</a>, <a class="el" href="posix__mq__handle_8cpp_source.html#l00060">Posix_mq_handle()</a>, and <a class="el" href="posix__mq__handle_8cpp_source.html#l01304">remove_persistent()</a>.</p>
<div class="dynheader">
Here is the caller graph for this function:</div>
<div class="dyncontent">
<div class="center"><iframe scrolling="no" frameborder="0" src="classipc_1_1transport_1_1Posix__mq__handle_a7d62af06a8cea2a821908384ee098125_icgraph.svg" width="627" height="243"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
</div>
</div>

</div>
</div>
<a id="a88e37b4835abbc491df222aebe31f46f" name="a88e37b4835abbc491df222aebe31f46f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a88e37b4835abbc491df222aebe31f46f">&#9670;&nbsp;</a></span>allow_impl()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;bool SND_ELSE_RCV&gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">bool ipc::transport::Posix_mq_handle::allow_impl</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Impl body for <code>allow_*()</code>. </p>
<dl class="tparams"><dt>Template Parameters</dt><dd>
  <table class="tparams">
    <tr><td class="paramname">SND_ELSE_RCV</td><td>True for <code>*_sends()</code>, else <code>*_receives()</code>. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>See callers. </dd></dl>

<p class="definition">Definition at line <a class="el" href="posix__mq__handle_8cpp_source.html#l01118">1118</a> of file <a class="el" href="posix__mq__handle_8cpp_source.html">posix_mq_handle.cpp</a>.</p>

<p class="reference">References <a class="el" href="posix__mq__handle_8hpp_source.html#l00676">m_interrupt_detector_rcv</a>, <a class="el" href="posix__mq__handle_8hpp_source.html#l00670">m_interrupt_detector_snd</a>, <a class="el" href="posix__mq__handle_8hpp_source.html#l00654">m_interrupting_rcv</a>, <a class="el" href="posix__mq__handle_8hpp_source.html#l00651">m_interrupting_snd</a>, <a class="el" href="posix__mq__handle_8hpp_source.html#l00627">m_mq</a>, <a class="el" href="native__handle_8cpp_source.html#l00061">ipc::util::Native_handle::null()</a>, and <a class="el" href="ipc__core_2src_2ipc_2util_2detail_2util_8cpp_source.html#l00096">ipc::util::pipe_consume()</a>.</p>
<div class="dynheader">
Here is the call graph for this function:</div>
<div class="dyncontent">
<div class="center"><iframe scrolling="no" frameborder="0" src="classipc_1_1transport_1_1Posix__mq__handle_a88e37b4835abbc491df222aebe31f46f_cgraph.svg" width="362" height="96"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
</div>
</div>

</div>
</div>
<a id="a4041e66104bf38ddc9dce34d11ccd405" name="a4041e66104bf38ddc9dce34d11ccd405"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a4041e66104bf38ddc9dce34d11ccd405">&#9670;&nbsp;</a></span>allow_receives()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool ipc::transport::Posix_mq_handle::allow_receives </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Implements <a class="el" href="classipc_1_1transport_1_1Persistent__mq__handle.html" title="A documentation-only concept defining the behavior of an object representing a light-weight handle to...">Persistent_mq_handle</a> API: Turn off preemptive/concurrent interruption of blocking-receives and receivable-waits/polls. </p>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="classipc_1_1transport_1_1Persistent__mq__handle.html#aaedc972e2ce207875a3e7262f9064b65" title="Disables mode enabled by interrupt_receives().">Persistent_mq_handle::allow_receives()</a>: implemented concept.</dd></dl>
<h3>INFO+ logging</h3>
<p >WARNING on duplicate use, INFO otherwise.</p>
<dl class="section return"><dt>Returns</dt><dd>See above. </dd></dl>

<p class="definition">Definition at line <a class="el" href="posix__mq__handle_8cpp_source.html#l01173">1173</a> of file <a class="el" href="posix__mq__handle_8cpp_source.html">posix_mq_handle.cpp</a>.</p>

</div>
</div>
<a id="a01d842eb304fff361d72a090113ffc9f" name="a01d842eb304fff361d72a090113ffc9f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a01d842eb304fff361d72a090113ffc9f">&#9670;&nbsp;</a></span>allow_sends()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool ipc::transport::Posix_mq_handle::allow_sends </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Implements <a class="el" href="classipc_1_1transport_1_1Persistent__mq__handle.html" title="A documentation-only concept defining the behavior of an object representing a light-weight handle to...">Persistent_mq_handle</a> API: Turn off preemptive/concurrent interruption of blocking-sends and sendable-waits/polls. </p>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="classipc_1_1transport_1_1Persistent__mq__handle.html#af43b22d89c5a228c2a72c321c2e24545" title="Disables mode enabled by interrupt_sends().">Persistent_mq_handle::allow_sends()</a>: implemented concept.</dd></dl>
<h3>INFO+ logging</h3>
<p >WARNING on duplicate use, INFO otherwise.</p>
<dl class="section return"><dt>Returns</dt><dd>See above. </dd></dl>

<p class="definition">Definition at line <a class="el" href="posix__mq__handle_8cpp_source.html#l01163">1163</a> of file <a class="el" href="posix__mq__handle_8cpp_source.html">posix_mq_handle.cpp</a>.</p>

</div>
</div>
<a id="a47378b13e9dce85a1e1021896c98c3cd" name="a47378b13e9dce85a1e1021896c98c3cd"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a47378b13e9dce85a1e1021896c98c3cd">&#9670;&nbsp;</a></span>epoll_setup()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="namespaceipc.html#aa3192e586cc45d3e7c22463bf2760f89">Error_code</a> ipc::transport::Posix_mq_handle::epoll_setup </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Ctor helper that sets up <a class="el" href="classipc_1_1transport_1_1Posix__mq__handle.html#a339b2a92eb51f445752b798e17560bd4" title="epoll_*() handle (.null() if and only if m_mq is null) that is level-triggered to be active (with onl...">m_epoll_hndl_snd</a> and <a class="el" href="classipc_1_1transport_1_1Posix__mq__handle.html#a859113a2c5248287efc55115654ec0ac" title="epoll_*() handle (.null() if and only if m_mq is null) that is level-triggered to be active (with onl...">m_epoll_hndl_rcv</a>. </p>
<p >If it fails it returns truthy code and puts everything back to as-if-ctor-failed state, including <a class="el" href="classipc_1_1transport_1_1Posix__mq__handle.html#ae9465f6fe5c2d36bcbe747fe1bf8d995" title="Underlying MQ handle.">m_mq</a> being null.</p>
<dl class="section return"><dt>Returns</dt><dd>See above. </dd></dl>

<p class="definition">Definition at line <a class="el" href="posix__mq__handle_8cpp_source.html#l00404">404</a> of file <a class="el" href="posix__mq__handle_8cpp_source.html">posix_mq_handle.cpp</a>.</p>

<p class="reference">References <a class="el" href="posix__mq__handle_8hpp_source.html#l00644">m_epoll_hndl_rcv</a>, <a class="el" href="posix__mq__handle_8hpp_source.html#l00637">m_epoll_hndl_snd</a>, <a class="el" href="posix__mq__handle_8hpp_source.html#l00676">m_interrupt_detector_rcv</a>, <a class="el" href="posix__mq__handle_8hpp_source.html#l00670">m_interrupt_detector_snd</a>, <a class="el" href="posix__mq__handle_8hpp_source.html#l00673">m_interrupter_rcv</a>, <a class="el" href="posix__mq__handle_8hpp_source.html#l00663">m_interrupter_snd</a>, <a class="el" href="posix__mq__handle_8hpp_source.html#l00627">m_mq</a>, and <a class="el" href="native__handle_8hpp_source.html#l00085">ipc::util::Native_handle::m_native_handle</a>.</p>

<p class="reference">Referenced by <a class="el" href="posix__mq__handle_8cpp_source.html#l00060">Posix_mq_handle()</a>.</p>
<div class="dynheader">
Here is the caller graph for this function:</div>
<div class="dyncontent">
<div class="center"><iframe scrolling="no" frameborder="0" src="classipc_1_1transport_1_1Posix__mq__handle_a47378b13e9dce85a1e1021896c98c3cd_icgraph.svg" width="363" height="59"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
</div>
</div>

</div>
</div>
<a id="a1df87fc56734cb902a71340eab6c0303" name="a1df87fc56734cb902a71340eab6c0303"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1df87fc56734cb902a71340eab6c0303">&#9670;&nbsp;</a></span>for_each_persistent()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename Handle_name_func &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void ipc::transport::Posix_mq_handle::for_each_persistent </td>
          <td>(</td>
          <td class="paramtype">const Handle_name_func &amp;&#160;</td>
          <td class="paramname"><em>handle_name_func</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Implements <a class="el" href="classipc_1_1transport_1_1Persistent__mq__handle.html" title="A documentation-only concept defining the behavior of an object representing a light-weight handle to...">Persistent_mq_handle</a> API. </p>
<p >Impl note for exposition: we use the fact that, e.g., in Linux the POSIX MQ devices are listed in flat fashion in /dev/mqueue.</p>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="classipc_1_1transport_1_1Persistent__mq__handle.html#ac14dd419cdbc97b6630900268f8b7dd2" title="Lists all named persistent MQs currently persisting, invoking the given handler synchronously on each...">Persistent_mq_handle::for_each_persistent()</a>: implemented concept.</dd></dl>
<dl class="tparams"><dt>Template Parameters</dt><dd>
  <table class="tparams">
    <tr><td class="paramname">Handle_name_func</td><td>See above. </td></tr>
  </table>
  </dd>
</dl>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">handle_name_func</td><td>See above. </td></tr>
  </table>
  </dd>
</dl>

<p class="definition">Definition at line <a class="el" href="posix__mq__handle_8hpp_source.html#l00684">684</a> of file <a class="el" href="posix__mq__handle_8hpp_source.html">posix_mq_handle.hpp</a>.</p>

<p class="reference">References <a class="el" href="util_8hpp_source.html#l00090">ipc::util::for_each_persistent_impl()</a>.</p>
<div class="dynheader">
Here is the call graph for this function:</div>
<div class="dyncontent">
<div class="center"><iframe scrolling="no" frameborder="0" src="classipc_1_1transport_1_1Posix__mq__handle_a1df87fc56734cb902a71340eab6c0303_cgraph.svg" width="532" height="59"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
</div>
</div>

</div>
</div>
<a id="a244ee5da96550553edca346d77c2a825" name="a244ee5da96550553edca346d77c2a825"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a244ee5da96550553edca346d77c2a825">&#9670;&nbsp;</a></span>handle_mq_api_result()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">bool ipc::transport::Posix_mq_handle::handle_mq_api_result </td>
          <td>(</td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>result</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="namespaceipc.html#aa3192e586cc45d3e7c22463bf2760f89">Error_code</a> *&#160;</td>
          <td class="paramname"><em>err_code</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="namespaceipc_1_1util.html#ae6ac47812a90d1287c61e0b7de7bc4f5">util::String_view</a>&#160;</td>
          <td class="paramname"><em>context</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Helper that handles the result of an <code>mq_*()</code> call by logging WARNING(s) on error; setting <code>*err_code</code> on error; clearing it on success. </p>
<p ><code>errno</code> is presumably set by the native API on error going into this.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">result</td><td>What the native API returned. </td></tr>
    <tr><td class="paramname">err_code</td><td>To set. If null behavior is undefined (assertion may trip). </td></tr>
    <tr><td class="paramname">context</td><td>See <a class="el" href="classipc_1_1transport_1_1Bipc__mq__handle.html#a9948742d87298d5842d298de9c946c7c" title="Error helper: Run func() which will perform a bipc::message_queue API that might throw; if it does em...">Bipc_mq_handle::op_with_possible_bipc_mq_exception()</a>. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd><code>true</code> if <code>*err_code</code> was set to success (falsy); else <code>false</code> (it was set to truthy). </dd></dl>

<p class="definition">Definition at line <a class="el" href="posix__mq__handle_8cpp_source.html#l01335">1335</a> of file <a class="el" href="posix__mq__handle_8cpp_source.html">posix_mq_handle.cpp</a>.</p>

<p class="reference">References <a class="el" href="namespaceipc_1_1transport_1_1error.html#adfef15ef4e76cc55d652fbd9c2797297a9ee20939f859e44681c24f6d153cc36b">ipc::transport::error::S_MQ_MESSAGE_SIZE_OVER_OR_UNDERFLOW</a>.</p>

<p class="reference">Referenced by <a class="el" href="posix__mq__handle_8cpp_source.html#l00616">max_msg_size()</a>, <a class="el" href="posix__mq__handle_8cpp_source.html#l00641">max_n_msgs()</a>, <a class="el" href="posix__mq__handle_8cpp_source.html#l00926">receive()</a>, <a class="el" href="posix__mq__handle_8cpp_source.html#l00728">send()</a>, <a class="el" href="posix__mq__handle_8cpp_source.html#l00660">set_non_blocking()</a>, <a class="el" href="posix__mq__handle_8cpp_source.html#l00994">timed_receive()</a>, <a class="el" href="posix__mq__handle_8cpp_source.html#l00796">timed_send()</a>, <a class="el" href="posix__mq__handle_8cpp_source.html#l00880">try_receive()</a>, and <a class="el" href="posix__mq__handle_8cpp_source.html#l00678">try_send()</a>.</p>
<div class="dynheader">
Here is the caller graph for this function:</div>
<div class="dyncontent">
<div class="center"><iframe scrolling="no" frameborder="0" src="classipc_1_1transport_1_1Posix__mq__handle_a244ee5da96550553edca346d77c2a825_icgraph.svg" width="596" height="671"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
</div>
</div>

</div>
</div>
<a id="a98884af2e485268f92b3f5f7c1069291" name="a98884af2e485268f92b3f5f7c1069291"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a98884af2e485268f92b3f5f7c1069291">&#9670;&nbsp;</a></span>interrupt_impl()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;bool SND_ELSE_RCV&gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">bool ipc::transport::Posix_mq_handle::interrupt_impl</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Impl body for <code>interrupt_*()</code>. </p>
<dl class="tparams"><dt>Template Parameters</dt><dd>
  <table class="tparams">
    <tr><td class="paramname">SND_ELSE_RCV</td><td>True for <code>*_sends()</code>, else <code>*_receives()</code>. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>See callers. </dd></dl>

<p class="definition">Definition at line <a class="el" href="posix__mq__handle_8cpp_source.html#l01079">1079</a> of file <a class="el" href="posix__mq__handle_8cpp_source.html">posix_mq_handle.cpp</a>.</p>

<p class="reference">References <a class="el" href="posix__mq__handle_8hpp_source.html#l00673">m_interrupter_rcv</a>, <a class="el" href="posix__mq__handle_8hpp_source.html#l00663">m_interrupter_snd</a>, <a class="el" href="posix__mq__handle_8hpp_source.html#l00654">m_interrupting_rcv</a>, <a class="el" href="posix__mq__handle_8hpp_source.html#l00651">m_interrupting_snd</a>, <a class="el" href="posix__mq__handle_8hpp_source.html#l00627">m_mq</a>, <a class="el" href="native__handle_8cpp_source.html#l00061">ipc::util::Native_handle::null()</a>, and <a class="el" href="ipc__core_2src_2ipc_2util_2detail_2util_8cpp_source.html#l00067">ipc::util::pipe_produce()</a>.</p>
<div class="dynheader">
Here is the call graph for this function:</div>
<div class="dyncontent">
<div class="center"><iframe scrolling="no" frameborder="0" src="classipc_1_1transport_1_1Posix__mq__handle_a98884af2e485268f92b3f5f7c1069291_cgraph.svg" width="379" height="96"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
</div>
</div>

</div>
</div>
<a id="a02262faa0f53b5518db359b4e5968b47" name="a02262faa0f53b5518db359b4e5968b47"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a02262faa0f53b5518db359b4e5968b47">&#9670;&nbsp;</a></span>interrupt_receives()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool ipc::transport::Posix_mq_handle::interrupt_receives </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Implements <a class="el" href="classipc_1_1transport_1_1Persistent__mq__handle.html" title="A documentation-only concept defining the behavior of an object representing a light-weight handle to...">Persistent_mq_handle</a> API: Turn on preemptive/concurrent interruption of blocking-receives and receivable-waits/polls. </p>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="classipc_1_1transport_1_1Persistent__mq__handle.html#a206333d3eb619588d17812f8f49013a2" title="Enables receives-interrupted mode: is_receivable() (future calls), receive() (future or concurrent ca...">Persistent_mq_handle::interrupt_receives()</a>: implemented concept.</dd></dl>
<h3>INFO+ logging</h3>
<p >WARNING on duplicate use, INFO otherwise.</p>
<dl class="section return"><dt>Returns</dt><dd>See above. </dd></dl>

<p class="definition">Definition at line <a class="el" href="posix__mq__handle_8cpp_source.html#l01168">1168</a> of file <a class="el" href="posix__mq__handle_8cpp_source.html">posix_mq_handle.cpp</a>.</p>

</div>
</div>
<a id="a0afe8a636902116223b4f33f081119df" name="a0afe8a636902116223b4f33f081119df"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0afe8a636902116223b4f33f081119df">&#9670;&nbsp;</a></span>interrupt_sends()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool ipc::transport::Posix_mq_handle::interrupt_sends </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Implements <a class="el" href="classipc_1_1transport_1_1Persistent__mq__handle.html" title="A documentation-only concept defining the behavior of an object representing a light-weight handle to...">Persistent_mq_handle</a> API: Turn on preemptive/concurrent interruption of blocking-sends and sendable-waits/polls. </p>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="classipc_1_1transport_1_1Persistent__mq__handle.html#af7a883553df39b16047b49942bd734c0" title="Enables sends-interrupted mode: is_sendable() (future calls), send() (future or concurrent calls),...">Persistent_mq_handle::interrupt_sends()</a>: implemented concept.</dd></dl>
<h3>INFO+ logging</h3>
<p >WARNING on duplicate use, INFO otherwise.</p>
<dl class="section return"><dt>Returns</dt><dd>See above. </dd></dl>

<p class="definition">Definition at line <a class="el" href="posix__mq__handle_8cpp_source.html#l01158">1158</a> of file <a class="el" href="posix__mq__handle_8cpp_source.html">posix_mq_handle.cpp</a>.</p>

</div>
</div>
<a id="a399bb25dbcfa06437b2f50abcc1500d1" name="a399bb25dbcfa06437b2f50abcc1500d1"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a399bb25dbcfa06437b2f50abcc1500d1">&#9670;&nbsp;</a></span>is_receivable()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool ipc::transport::Posix_mq_handle::is_receivable </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="namespaceipc.html#aa3192e586cc45d3e7c22463bf2760f89">Error_code</a> *&#160;</td>
          <td class="paramname"><em>err_code</em> = <code>0</code></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Implements <a class="el" href="classipc_1_1transport_1_1Persistent__mq__handle.html" title="A documentation-only concept defining the behavior of an object representing a light-weight handle to...">Persistent_mq_handle</a> API: Like <a class="el" href="classipc_1_1transport_1_1Posix__mq__handle.html#abe9a423ceda292d5b01b54039102170b" title="Implements Persistent_mq_handle API: Non-blocking receive: pops copy of message from queue into buffe...">try_receive()</a> but without the actual popping of a message. </p>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="classipc_1_1transport_1_1Persistent__mq__handle.html#acdf4279219020020b1d8b3ff8a80cbe2" title="Equivalent to try_receive() except stops short of reading anything, with true result indicating that ...">Persistent_mq_handle::is_receivable()</a>: implemented concept.</dd></dl>
<h3>INFO+ logging</h3>
<p >WARNING on error.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">err_code</td><td>See above. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>See above. </dd></dl>

<p class="definition">Definition at line <a class="el" href="posix__mq__handle_8cpp_source.html#l01284">1284</a> of file <a class="el" href="posix__mq__handle_8cpp_source.html">posix_mq_handle.cpp</a>.</p>

<p class="reference">References <a class="el" href="posix__mq__handle_8cpp_source.html#l01178">wait_impl()</a>.</p>
<div class="dynheader">
Here is the call graph for this function:</div>
<div class="dyncontent">
<div class="center"><iframe scrolling="no" frameborder="0" src="classipc_1_1transport_1_1Posix__mq__handle_a399bb25dbcfa06437b2f50abcc1500d1_cgraph.svg" width="570" height="71"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
</div>
</div>

</div>
</div>
<a id="a409b0d91e57c994341d900f840e75bb4" name="a409b0d91e57c994341d900f840e75bb4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a409b0d91e57c994341d900f840e75bb4">&#9670;&nbsp;</a></span>is_sendable()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool ipc::transport::Posix_mq_handle::is_sendable </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="namespaceipc.html#aa3192e586cc45d3e7c22463bf2760f89">Error_code</a> *&#160;</td>
          <td class="paramname"><em>err_code</em> = <code>0</code></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Implements <a class="el" href="classipc_1_1transport_1_1Persistent__mq__handle.html" title="A documentation-only concept defining the behavior of an object representing a light-weight handle to...">Persistent_mq_handle</a> API: Like <a class="el" href="classipc_1_1transport_1_1Posix__mq__handle.html#a5787b3fe1eb2a7f5f6abda8b9536529b" title="Implements Persistent_mq_handle API: Non-blocking send: pushes copy of message to queue and returns t...">try_send()</a> but without the actual pushing of a message. </p>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="classipc_1_1transport_1_1Persistent__mq__handle.html#ab95e3d32a7ad3fa3630ba54442d8f2ee" title="Equivalent to try_send() except stops short of writing anything, with true result indicating that try...">Persistent_mq_handle::is_sendable()</a>: implemented concept.</dd></dl>
<h3>INFO+ logging</h3>
<p >WARNING on error.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">err_code</td><td>See above. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>See above. </dd></dl>

<p class="definition">Definition at line <a class="el" href="posix__mq__handle_8cpp_source.html#l01269">1269</a> of file <a class="el" href="posix__mq__handle_8cpp_source.html">posix_mq_handle.cpp</a>.</p>

<p class="reference">References <a class="el" href="posix__mq__handle_8cpp_source.html#l01178">wait_impl()</a>.</p>
<div class="dynheader">
Here is the call graph for this function:</div>
<div class="dyncontent">
<div class="center"><iframe scrolling="no" frameborder="0" src="classipc_1_1transport_1_1Posix__mq__handle_a409b0d91e57c994341d900f840e75bb4_cgraph.svg" width="563" height="71"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
</div>
</div>

</div>
</div>
<a id="a412e7c922909eeb5707bb0abe6e27a76" name="a412e7c922909eeb5707bb0abe6e27a76"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a412e7c922909eeb5707bb0abe6e27a76">&#9670;&nbsp;</a></span>max_msg_size()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">size_t ipc::transport::Posix_mq_handle::max_msg_size </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Implements <a class="el" href="classipc_1_1transport_1_1Persistent__mq__handle.html" title="A documentation-only concept defining the behavior of an object representing a light-weight handle to...">Persistent_mq_handle</a> API: Returns the max message size of the underlying queue. </p>
<p >Reminder: This is not required to match was was passed to <code>Create_only</code> or <code>Open_or_create</code> ctor.</p>
<dl class="section return"><dt>Returns</dt><dd>See above. </dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="classipc_1_1transport_1_1Persistent__mq__handle.html#ae2efe92707c53c46bc70b84f96bda217" title="Returns the max message size of the underlying queue.">Persistent_mq_handle::max_msg_size()</a>: implemented concept. </dd></dl>

<p class="definition">Definition at line <a class="el" href="posix__mq__handle_8cpp_source.html#l00616">616</a> of file <a class="el" href="posix__mq__handle_8cpp_source.html">posix_mq_handle.cpp</a>.</p>

<p class="reference">References <a class="el" href="posix__mq__handle_8cpp_source.html#l01335">handle_mq_api_result()</a>, <a class="el" href="posix__mq__handle_8hpp_source.html#l00627">m_mq</a>, <a class="el" href="native__handle_8hpp_source.html#l00085">ipc::util::Native_handle::m_native_handle</a>, and <a class="el" href="native__handle_8cpp_source.html#l00061">ipc::util::Native_handle::null()</a>.</p>
<div class="dynheader">
Here is the call graph for this function:</div>
<div class="dyncontent">
<div class="center"><iframe scrolling="no" frameborder="0" src="classipc_1_1transport_1_1Posix__mq__handle_a412e7c922909eeb5707bb0abe6e27a76_cgraph.svg" width="387" height="120"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
</div>
</div>

</div>
</div>
<a id="a514dbdda12ec70ea1ff65abfa6237ce2" name="a514dbdda12ec70ea1ff65abfa6237ce2"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a514dbdda12ec70ea1ff65abfa6237ce2">&#9670;&nbsp;</a></span>max_n_msgs()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">size_t ipc::transport::Posix_mq_handle::max_n_msgs </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Implements <a class="el" href="classipc_1_1transport_1_1Persistent__mq__handle.html" title="A documentation-only concept defining the behavior of an object representing a light-weight handle to...">Persistent_mq_handle</a> API: Returns the max message count of the underlying queue. </p>
<p >Reminder: This is not required to match was was passed to <code>Create_only</code> or <code>Open_or_create</code> ctor.</p>
<dl class="section return"><dt>Returns</dt><dd>See above. </dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="classipc_1_1transport_1_1Persistent__mq__handle.html#a22575a5750d322ccf87a923a3d662756" title="Returns the max message count of the underlying queue.">Persistent_mq_handle::max_n_msgs()</a>: implemented concept. </dd></dl>

<p class="definition">Definition at line <a class="el" href="posix__mq__handle_8cpp_source.html#l00641">641</a> of file <a class="el" href="posix__mq__handle_8cpp_source.html">posix_mq_handle.cpp</a>.</p>

<p class="reference">References <a class="el" href="posix__mq__handle_8cpp_source.html#l01335">handle_mq_api_result()</a>, <a class="el" href="posix__mq__handle_8hpp_source.html#l00627">m_mq</a>, <a class="el" href="native__handle_8hpp_source.html#l00085">ipc::util::Native_handle::m_native_handle</a>, and <a class="el" href="native__handle_8cpp_source.html#l00061">ipc::util::Native_handle::null()</a>.</p>
<div class="dynheader">
Here is the call graph for this function:</div>
<div class="dyncontent">
<div class="center"><iframe scrolling="no" frameborder="0" src="classipc_1_1transport_1_1Posix__mq__handle_a514dbdda12ec70ea1ff65abfa6237ce2_cgraph.svg" width="378" height="120"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
</div>
</div>

</div>
</div>
<a id="a62bc5410c9928099dff46ba021acb879" name="a62bc5410c9928099dff46ba021acb879"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a62bc5410c9928099dff46ba021acb879">&#9670;&nbsp;</a></span>native_handle()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="namespaceipc_1_1transport.html#a7ee4551983d9df16ec16a3139bac50e8">Native_handle</a> ipc::transport::Posix_mq_handle::native_handle </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Implements <a class="el" href="classipc_1_1transport_1_1Persistent__mq__handle.html" title="A documentation-only concept defining the behavior of an object representing a light-weight handle to...">Persistent_mq_handle</a> API: Returns the stored native MQ handle; null if not open. </p>
<dl class="section return"><dt>Returns</dt><dd>See above. </dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="classipc_1_1transport_1_1Persistent__mq__handle.html#a25e96c4f060cc3c4b611c4e2de60abaf" title="Available if and only if S_HAS_NATIVE_HANDLE is true: Returns the stored native MQ handle; null means...">Persistent_mq_handle::native_handle()</a>: implemented concept. </dd></dl>

<p class="definition">Definition at line <a class="el" href="posix__mq__handle_8cpp_source.html#l01299">1299</a> of file <a class="el" href="posix__mq__handle_8cpp_source.html">posix_mq_handle.cpp</a>.</p>

<p class="reference">References <a class="el" href="posix__mq__handle_8hpp_source.html#l00627">m_mq</a>.</p>

<p class="reference">Referenced by <a class="el" href="posix__mq__handle_8cpp_source.html#l01362">operator&lt;&lt;()</a>.</p>
<div class="dynheader">
Here is the caller graph for this function:</div>
<div class="dyncontent">
<div class="center"><iframe scrolling="no" frameborder="0" src="classipc_1_1transport_1_1Posix__mq__handle_a62bc5410c9928099dff46ba021acb879_icgraph.svg" width="391" height="47"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
</div>
</div>

</div>
</div>
<a id="aeec1f1528e8d51e85f0cbb784ea23e4b" name="aeec1f1528e8d51e85f0cbb784ea23e4b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aeec1f1528e8d51e85f0cbb784ea23e4b">&#9670;&nbsp;</a></span>operator=()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classipc_1_1transport_1_1Posix__mq__handle.html">Posix_mq_handle</a> &amp; ipc::transport::Posix_mq_handle::operator= </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classipc_1_1transport_1_1Posix__mq__handle.html">Posix_mq_handle</a> &amp;&amp;&#160;</td>
          <td class="paramname"><em>src</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Implements <a class="el" href="classipc_1_1transport_1_1Persistent__mq__handle.html" title="A documentation-only concept defining the behavior of an object representing a light-weight handle to...">Persistent_mq_handle</a> API: Replaces handle with the source handle while making the latter invalid as-if default-cted. </p>
<p >Reminder, informally: this is a light-weight op.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">src</td><td>See above. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd><code>*this</code>. </dd></dl>

<p class="definition">Definition at line <a class="el" href="posix__mq__handle_8cpp_source.html#l00525">525</a> of file <a class="el" href="posix__mq__handle_8cpp_source.html">posix_mq_handle.cpp</a>.</p>

<p class="reference">References <a class="el" href="shared__name_8cpp_source.html#l00170">ipc::util::Shared_name::clear()</a>, <a class="el" href="posix__mq__handle_8hpp_source.html#l00630">m_absolute_name</a>, <a class="el" href="posix__mq__handle_8hpp_source.html#l00644">m_epoll_hndl_rcv</a>, <a class="el" href="posix__mq__handle_8hpp_source.html#l00637">m_epoll_hndl_snd</a>, <a class="el" href="posix__mq__handle_8hpp_source.html#l00676">m_interrupt_detector_rcv</a>, <a class="el" href="posix__mq__handle_8hpp_source.html#l00670">m_interrupt_detector_snd</a>, <a class="el" href="posix__mq__handle_8hpp_source.html#l00673">m_interrupter_rcv</a>, <a class="el" href="posix__mq__handle_8hpp_source.html#l00663">m_interrupter_snd</a>, <a class="el" href="posix__mq__handle_8hpp_source.html#l00627">m_mq</a>, <a class="el" href="posix__mq__handle_8hpp_source.html#l00657">m_nb_task_engine</a>, <a class="el" href="posix__mq__handle_8cpp_source.html#l00545">ipc::transport::swap()</a>, and <a class="el" href="posix__mq__handle_8cpp_source.html#l00545">swap</a>.</p>

<p class="reference">Referenced by <a class="el" href="posix__mq__handle_8cpp_source.html#l00495">Posix_mq_handle()</a>.</p>
<div class="dynheader">
Here is the call graph for this function:</div>
<div class="dyncontent">
<div class="center"><iframe scrolling="no" frameborder="0" src="classipc_1_1transport_1_1Posix__mq__handle_aeec1f1528e8d51e85f0cbb784ea23e4b_cgraph.svg" width="356" height="96"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
</div>
</div>
<div class="dynheader">
Here is the caller graph for this function:</div>
<div class="dyncontent">
<div class="center"><iframe scrolling="no" frameborder="0" src="classipc_1_1transport_1_1Posix__mq__handle_aeec1f1528e8d51e85f0cbb784ea23e4b_icgraph.svg" width="355" height="59"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
</div>
</div>

</div>
</div>
<a id="ac2cf0213ceaa0a8c621ee2c02c6fbec6" name="ac2cf0213ceaa0a8c621ee2c02c6fbec6"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac2cf0213ceaa0a8c621ee2c02c6fbec6">&#9670;&nbsp;</a></span>pipe_setup()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="namespaceipc.html#aa3192e586cc45d3e7c22463bf2760f89">Error_code</a> ipc::transport::Posix_mq_handle::pipe_setup </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Ctor helper that sets up <code>m_interrupt*</code> pipe items. </p>
<p >If it fails it returns truthy code and cleans up what it did. It ignores everything else like <a class="el" href="classipc_1_1transport_1_1Posix__mq__handle.html#ae9465f6fe5c2d36bcbe747fe1bf8d995" title="Underlying MQ handle.">m_mq</a>.</p>
<dl class="section return"><dt>Returns</dt><dd>See above. </dd></dl>

<p class="definition">Definition at line <a class="el" href="posix__mq__handle_8cpp_source.html#l00377">377</a> of file <a class="el" href="posix__mq__handle_8cpp_source.html">posix_mq_handle.cpp</a>.</p>

<p class="reference">References <a class="el" href="posix__mq__handle_8cpp_source.html#l01357">absolute_name()</a>, <a class="el" href="posix__mq__handle_8hpp_source.html#l00676">m_interrupt_detector_rcv</a>, <a class="el" href="posix__mq__handle_8hpp_source.html#l00670">m_interrupt_detector_snd</a>, <a class="el" href="posix__mq__handle_8hpp_source.html#l00673">m_interrupter_rcv</a>, and <a class="el" href="posix__mq__handle_8hpp_source.html#l00663">m_interrupter_snd</a>.</p>

<p class="reference">Referenced by <a class="el" href="posix__mq__handle_8cpp_source.html#l00060">Posix_mq_handle()</a>.</p>
<div class="dynheader">
Here is the call graph for this function:</div>
<div class="dyncontent">
<div class="center"><iframe scrolling="no" frameborder="0" src="classipc_1_1transport_1_1Posix__mq__handle_ac2cf0213ceaa0a8c621ee2c02c6fbec6_cgraph.svg" width="392" height="47"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
</div>
</div>
<div class="dynheader">
Here is the caller graph for this function:</div>
<div class="dyncontent">
<div class="center"><iframe scrolling="no" frameborder="0" src="classipc_1_1transport_1_1Posix__mq__handle_ac2cf0213ceaa0a8c621ee2c02c6fbec6_icgraph.svg" width="359" height="59"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
</div>
</div>

</div>
</div>
<a id="a65f35bfe249b13dc3bc0442d10a55a0f" name="a65f35bfe249b13dc3bc0442d10a55a0f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a65f35bfe249b13dc3bc0442d10a55a0f">&#9670;&nbsp;</a></span>receive()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void ipc::transport::Posix_mq_handle::receive </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="namespaceipc_1_1util.html#a6cb62ae434900f3a8915b33ec5d61a96">util::Blob_mutable</a> *&#160;</td>
          <td class="paramname"><em>blob</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="namespaceipc.html#aa3192e586cc45d3e7c22463bf2760f89">Error_code</a> *&#160;</td>
          <td class="paramname"><em>err_code</em> = <code>0</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Implements <a class="el" href="classipc_1_1transport_1_1Persistent__mq__handle.html" title="A documentation-only concept defining the behavior of an object representing a light-weight handle to...">Persistent_mq_handle</a> API: Blocking receive: pops copy of message from queue into buffer; if queue is empty blocks until it is not. </p>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="classipc_1_1transport_1_1Persistent__mq__handle.html#ae1e6822d16d30dc57c95e3e051e5f8a8" title="Blocking receive: pops copy of message from queue into buffer; if queue is empty blocks until it is n...">Persistent_mq_handle::receive()</a>: implemented concept.</dd></dl>
<h3>INFO+ logging</h3>
<p >WARNING on error. (You may use the <code>flow::log::Config::this_thread_verbosity_override_auto()</code> to temporarily, in that thread only, disable/reduce logging. This is quite easy and performant.)</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">blob</td><td>See above. </td></tr>
    <tr><td class="paramname">err_code</td><td>See above. </td></tr>
  </table>
  </dd>
</dl>

<p class="definition">Definition at line <a class="el" href="posix__mq__handle_8cpp_source.html#l00926">926</a> of file <a class="el" href="posix__mq__handle_8cpp_source.html">posix_mq_handle.cpp</a>.</p>

<p class="reference">References <a class="el" href="posix__mq__handle_8cpp_source.html#l01335">handle_mq_api_result()</a>, <a class="el" href="posix__mq__handle_8hpp_source.html#l00627">m_mq</a>, <a class="el" href="native__handle_8hpp_source.html#l00085">ipc::util::Native_handle::m_native_handle</a>, <a class="el" href="native__handle_8cpp_source.html#l00061">ipc::util::Native_handle::null()</a>, <a class="el" href="posix__mq__handle_8cpp_source.html#l00926">receive()</a>, and <a class="el" href="posix__mq__handle_8cpp_source.html#l01289">wait_receivable()</a>.</p>

<p class="reference">Referenced by <a class="el" href="posix__mq__handle_8cpp_source.html#l00926">receive()</a>.</p>
<div class="dynheader">
Here is the call graph for this function:</div>
<div class="dyncontent">
<div class="center"><iframe scrolling="no" frameborder="0" src="classipc_1_1transport_1_1Posix__mq__handle_a65f35bfe249b13dc3bc0442d10a55a0f_cgraph.svg" width="766" height="195"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
</div>
</div>
<div class="dynheader">
Here is the caller graph for this function:</div>
<div class="dyncontent">
<div class="center"><iframe scrolling="no" frameborder="0" src="classipc_1_1transport_1_1Posix__mq__handle_a65f35bfe249b13dc3bc0442d10a55a0f_icgraph.svg" width="146" height="71"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
</div>
</div>

</div>
</div>
<a id="a658271ad982e3e0af4c3666b947019cc" name="a658271ad982e3e0af4c3666b947019cc"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a658271ad982e3e0af4c3666b947019cc">&#9670;&nbsp;</a></span>remove_persistent()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void ipc::transport::Posix_mq_handle::remove_persistent </td>
          <td>(</td>
          <td class="paramtype">flow::log::Logger *&#160;</td>
          <td class="paramname"><em>logger_ptr</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="namespaceipc_1_1transport.html#a33de1c256addb3964b839dc2dd407d24">Shared_name</a> &amp;&#160;</td>
          <td class="paramname"><em>name</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="namespaceipc.html#aa3192e586cc45d3e7c22463bf2760f89">Error_code</a> *&#160;</td>
          <td class="paramname"><em>err_code</em> = <code>0</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Implements <a class="el" href="classipc_1_1transport_1_1Persistent__mq__handle.html" title="A documentation-only concept defining the behavior of an object representing a light-weight handle to...">Persistent_mq_handle</a> API: Removes the named persistent MQ. </p>
<p >Reminder: name is removed immediately (if present &ndash; otherwise error), but underlying MQ continues to exist until all system-wide handles to it are closed.</p>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="classipc_1_1transport_1_1Persistent__mq__handle.html#a2e8b8102fdbacc064d4759533a725f51" title="Removes the named persistent MQ.">Persistent_mq_handle::remove_persistent()</a>: implemented concept.</dd>
<dd>
Reminder: see also <code>util::remove_each_persistent_*()</code>.</dd></dl>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">logger_ptr</td><td>See above. </td></tr>
    <tr><td class="paramname">name</td><td>See above. </td></tr>
    <tr><td class="paramname">err_code</td><td>See above. </td></tr>
  </table>
  </dd>
</dl>

<p class="definition">Definition at line <a class="el" href="posix__mq__handle_8cpp_source.html#l01304">1304</a> of file <a class="el" href="posix__mq__handle_8cpp_source.html">posix_mq_handle.cpp</a>.</p>

<p class="reference">References <a class="el" href="posix__mq__handle_8cpp_source.html#l01357">absolute_name()</a>, and <a class="el" href="posix__mq__handle_8cpp_source.html#l01304">remove_persistent()</a>.</p>

<p class="reference">Referenced by <a class="el" href="posix__mq__handle_8cpp_source.html#l01304">remove_persistent()</a>.</p>
<div class="dynheader">
Here is the call graph for this function:</div>
<div class="dyncontent">
<div class="center"><iframe scrolling="no" frameborder="0" src="classipc_1_1transport_1_1Posix__mq__handle_a658271ad982e3e0af4c3666b947019cc_cgraph.svg" width="434" height="71"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
</div>
</div>
<div class="dynheader">
Here is the caller graph for this function:</div>
<div class="dyncontent">
<div class="center"><iframe scrolling="no" frameborder="0" src="classipc_1_1transport_1_1Posix__mq__handle_a658271ad982e3e0af4c3666b947019cc_icgraph.svg" width="207" height="71"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
</div>
</div>

</div>
</div>
<a id="a6e9b11537c7c83f43728aca7af348a42" name="a6e9b11537c7c83f43728aca7af348a42"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6e9b11537c7c83f43728aca7af348a42">&#9670;&nbsp;</a></span>send()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void ipc::transport::Posix_mq_handle::send </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="namespaceipc_1_1util.html#ae0be7edba7e30ffa3f8b742af621f2ab">util::Blob_const</a> &amp;&#160;</td>
          <td class="paramname"><em>blob</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="namespaceipc.html#aa3192e586cc45d3e7c22463bf2760f89">Error_code</a> *&#160;</td>
          <td class="paramname"><em>err_code</em> = <code>0</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Implements <a class="el" href="classipc_1_1transport_1_1Persistent__mq__handle.html" title="A documentation-only concept defining the behavior of an object representing a light-weight handle to...">Persistent_mq_handle</a> API: Blocking send: pushes copy of message to queue; if queue is full blocks until it is not. </p>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="classipc_1_1transport_1_1Persistent__mq__handle.html#a9d54e47b729eec9f72dee869326bfa8f" title="Blocking send: pushes copy of message to queue; if queue is full blocks until it is not.">Persistent_mq_handle::send()</a>: implemented concept.</dd></dl>
<h3>INFO+ logging</h3>
<p >WARNING on error. (You may use the <code>flow::log::Config::this_thread_verbosity_override_auto()</code> to temporarily, in that thread only, disable/reduce logging. This is quite easy and performant.)</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">blob</td><td>See above. </td></tr>
    <tr><td class="paramname">err_code</td><td>See above. </td></tr>
  </table>
  </dd>
</dl>

<p class="definition">Definition at line <a class="el" href="posix__mq__handle_8cpp_source.html#l00728">728</a> of file <a class="el" href="posix__mq__handle_8cpp_source.html">posix_mq_handle.cpp</a>.</p>

<p class="reference">References <a class="el" href="ipc__core_2src_2ipc_2util_2util_8cpp_source.html#l00158">ipc::util::blob_data()</a>, <a class="el" href="posix__mq__handle_8cpp_source.html#l01335">handle_mq_api_result()</a>, <a class="el" href="posix__mq__handle_8hpp_source.html#l00627">m_mq</a>, <a class="el" href="native__handle_8hpp_source.html#l00085">ipc::util::Native_handle::m_native_handle</a>, <a class="el" href="native__handle_8cpp_source.html#l00061">ipc::util::Native_handle::null()</a>, <a class="el" href="posix__mq__handle_8cpp_source.html#l00728">send()</a>, and <a class="el" href="posix__mq__handle_8cpp_source.html#l01274">wait_sendable()</a>.</p>

<p class="reference">Referenced by <a class="el" href="posix__mq__handle_8cpp_source.html#l00728">send()</a>.</p>
<div class="dynheader">
Here is the call graph for this function:</div>
<div class="dyncontent">
<div class="center"><iframe scrolling="no" frameborder="0" src="classipc_1_1transport_1_1Posix__mq__handle_a6e9b11537c7c83f43728aca7af348a42_cgraph.svg" width="758" height="243"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
</div>
</div>
<div class="dynheader">
Here is the caller graph for this function:</div>
<div class="dyncontent">
<div class="center"><iframe scrolling="no" frameborder="0" src="classipc_1_1transport_1_1Posix__mq__handle_a6e9b11537c7c83f43728aca7af348a42_icgraph.svg" width="143" height="71"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
</div>
</div>

</div>
</div>
<a id="ab68150c87931f6eb32d0908049e4dac6" name="ab68150c87931f6eb32d0908049e4dac6"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab68150c87931f6eb32d0908049e4dac6">&#9670;&nbsp;</a></span>set_non_blocking()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">bool ipc::transport::Posix_mq_handle::set_non_blocking </td>
          <td>(</td>
          <td class="paramtype">bool&#160;</td>
          <td class="paramname"><em>nb</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="namespaceipc.html#aa3192e586cc45d3e7c22463bf2760f89">Error_code</a> *&#160;</td>
          <td class="paramname"><em>err_code</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Sets <a class="el" href="classipc_1_1transport_1_1Posix__mq__handle.html#ae9465f6fe5c2d36bcbe747fe1bf8d995" title="Underlying MQ handle.">m_mq</a> to blocking or non-blocking and returns <code>true</code> on success and clears <code>*err_code</code>; otherwise returns <code>false</code> and sets truthy <code>*err_code</code>. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">err_code</td><td>To set. If null behavior is undefined (assertion may trip). </td></tr>
    <tr><td class="paramname">nb</td><td>Non-blocking if <code>true</code>, else blocking. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd><code>true</code> &lt;=&gt; success. </dd></dl>

<p class="definition">Definition at line <a class="el" href="posix__mq__handle_8cpp_source.html#l00660">660</a> of file <a class="el" href="posix__mq__handle_8cpp_source.html">posix_mq_handle.cpp</a>.</p>

<p class="reference">References <a class="el" href="posix__mq__handle_8cpp_source.html#l01335">handle_mq_api_result()</a>, <a class="el" href="posix__mq__handle_8hpp_source.html#l00627">m_mq</a>, and <a class="el" href="native__handle_8hpp_source.html#l00085">ipc::util::Native_handle::m_native_handle</a>.</p>

<p class="reference">Referenced by <a class="el" href="posix__mq__handle_8cpp_source.html#l00060">Posix_mq_handle()</a>.</p>
<div class="dynheader">
Here is the call graph for this function:</div>
<div class="dyncontent">
<div class="center"><iframe scrolling="no" frameborder="0" src="classipc_1_1transport_1_1Posix__mq__handle_ab68150c87931f6eb32d0908049e4dac6_cgraph.svg" width="403" height="59"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
</div>
</div>
<div class="dynheader">
Here is the caller graph for this function:</div>
<div class="dyncontent">
<div class="center"><iframe scrolling="no" frameborder="0" src="classipc_1_1transport_1_1Posix__mq__handle_ab68150c87931f6eb32d0908049e4dac6_icgraph.svg" width="394" height="59"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
</div>
</div>

</div>
</div>
<a id="aa853452d0d0aeeaf61461cc8a48b5c09" name="aa853452d0d0aeeaf61461cc8a48b5c09"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa853452d0d0aeeaf61461cc8a48b5c09">&#9670;&nbsp;</a></span>timed_receive()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool ipc::transport::Posix_mq_handle::timed_receive </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="namespaceipc_1_1util.html#a6cb62ae434900f3a8915b33ec5d61a96">util::Blob_mutable</a> *&#160;</td>
          <td class="paramname"><em>blob</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="namespaceipc_1_1util.html#ac66141280c3b7295a86b65209f31cc58">util::Fine_duration</a>&#160;</td>
          <td class="paramname"><em>timeout_from_now</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="namespaceipc.html#aa3192e586cc45d3e7c22463bf2760f89">Error_code</a> *&#160;</td>
          <td class="paramname"><em>err_code</em> = <code>0</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Implements <a class="el" href="classipc_1_1transport_1_1Persistent__mq__handle.html" title="A documentation-only concept defining the behavior of an object representing a light-weight handle to...">Persistent_mq_handle</a> API: Blocking timed receive: pops copy of message from queue into buffer; if queue is empty blocks until it is not, or the specified time passes, whichever happens first. </p>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="classipc_1_1transport_1_1Persistent__mq__handle.html#af547b6f1b1e51a7d6f6fbafc14c95f9d" title="Blocking timed receive: pops copy of message from queue into buffer; if queue is empty blocks until i...">Persistent_mq_handle::timed_receive()</a>: implemented concept.</dd></dl>
<h3>INFO+ logging</h3>
<p >WARNING on error or timed out. (You may use the <code>flow::log::Config::this_thread_verbosity_override_auto()</code> to temporarily, in that thread only, disable/reduce logging. This is quite easy and performant.)</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">blob</td><td>See above. </td></tr>
    <tr><td class="paramname">timeout_from_now</td><td>See above. </td></tr>
    <tr><td class="paramname">err_code</td><td>See above. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>See above. </dd></dl>

<p class="definition">Definition at line <a class="el" href="posix__mq__handle_8cpp_source.html#l00994">994</a> of file <a class="el" href="posix__mq__handle_8cpp_source.html">posix_mq_handle.cpp</a>.</p>

<p class="reference">References <a class="el" href="posix__mq__handle_8cpp_source.html#l01335">handle_mq_api_result()</a>, <a class="el" href="posix__mq__handle_8hpp_source.html#l00627">m_mq</a>, <a class="el" href="native__handle_8hpp_source.html#l00085">ipc::util::Native_handle::m_native_handle</a>, <a class="el" href="native__handle_8cpp_source.html#l00061">ipc::util::Native_handle::null()</a>, <a class="el" href="posix__mq__handle_8cpp_source.html#l00994">timed_receive()</a>, and <a class="el" href="posix__mq__handle_8cpp_source.html#l01294">timed_wait_receivable()</a>.</p>

<p class="reference">Referenced by <a class="el" href="posix__mq__handle_8cpp_source.html#l00994">timed_receive()</a>.</p>
<div class="dynheader">
Here is the call graph for this function:</div>
<div class="dyncontent">
<div class="center"><iframe scrolling="no" frameborder="0" src="classipc_1_1transport_1_1Posix__mq__handle_aa853452d0d0aeeaf61461cc8a48b5c09_cgraph.svg" width="776" height="195"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
</div>
</div>
<div class="dynheader">
Here is the caller graph for this function:</div>
<div class="dyncontent">
<div class="center"><iframe scrolling="no" frameborder="0" src="classipc_1_1transport_1_1Posix__mq__handle_aa853452d0d0aeeaf61461cc8a48b5c09_icgraph.svg" width="182" height="71"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
</div>
</div>

</div>
</div>
<a id="abe2b3968c60945224ddfce119bcae018" name="abe2b3968c60945224ddfce119bcae018"></a>
<h2 class="memtitle"><span class="permalink"><a href="#abe2b3968c60945224ddfce119bcae018">&#9670;&nbsp;</a></span>timed_send()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool ipc::transport::Posix_mq_handle::timed_send </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="namespaceipc_1_1util.html#ae0be7edba7e30ffa3f8b742af621f2ab">util::Blob_const</a> &amp;&#160;</td>
          <td class="paramname"><em>blob</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="namespaceipc_1_1util.html#ac66141280c3b7295a86b65209f31cc58">util::Fine_duration</a>&#160;</td>
          <td class="paramname"><em>timeout_from_now</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="namespaceipc.html#aa3192e586cc45d3e7c22463bf2760f89">Error_code</a> *&#160;</td>
          <td class="paramname"><em>err_code</em> = <code>0</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Implements <a class="el" href="classipc_1_1transport_1_1Persistent__mq__handle.html" title="A documentation-only concept defining the behavior of an object representing a light-weight handle to...">Persistent_mq_handle</a> API: Blocking timed send: pushes copy of message to queue; if queue is full blocks until it is not, or the specified time passes, whichever happens first. </p>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="classipc_1_1transport_1_1Persistent__mq__handle.html#ab4cba10b83df79acf76c64b0deb7f624" title="Blocking timed send: pushes copy of message to queue; if queue is full blocks until it is not,...">Persistent_mq_handle::timed_send()</a>: implemented concept.</dd></dl>
<h3>INFO+ logging</h3>
<p >WARNING on error or timed out. (You may use the <code>flow::log::Config::this_thread_verbosity_override_auto()</code> to temporarily, in that thread only, disable/reduce logging. This is quite easy and performant.)</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">blob</td><td>See above. </td></tr>
    <tr><td class="paramname">timeout_from_now</td><td>See above. </td></tr>
    <tr><td class="paramname">err_code</td><td>See above. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>See above. </dd></dl>

<p class="definition">Definition at line <a class="el" href="posix__mq__handle_8cpp_source.html#l00796">796</a> of file <a class="el" href="posix__mq__handle_8cpp_source.html">posix_mq_handle.cpp</a>.</p>

<p class="reference">References <a class="el" href="ipc__core_2src_2ipc_2util_2util_8cpp_source.html#l00158">ipc::util::blob_data()</a>, <a class="el" href="posix__mq__handle_8cpp_source.html#l01335">handle_mq_api_result()</a>, <a class="el" href="posix__mq__handle_8hpp_source.html#l00627">m_mq</a>, <a class="el" href="native__handle_8hpp_source.html#l00085">ipc::util::Native_handle::m_native_handle</a>, <a class="el" href="native__handle_8cpp_source.html#l00061">ipc::util::Native_handle::null()</a>, <a class="el" href="posix__mq__handle_8cpp_source.html#l00796">timed_send()</a>, and <a class="el" href="posix__mq__handle_8cpp_source.html#l01279">timed_wait_sendable()</a>.</p>

<p class="reference">Referenced by <a class="el" href="posix__mq__handle_8cpp_source.html#l00796">timed_send()</a>.</p>
<div class="dynheader">
Here is the call graph for this function:</div>
<div class="dyncontent">
<div class="center"><iframe scrolling="no" frameborder="0" src="classipc_1_1transport_1_1Posix__mq__handle_abe2b3968c60945224ddfce119bcae018_cgraph.svg" width="764" height="243"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
</div>
</div>
<div class="dynheader">
Here is the caller graph for this function:</div>
<div class="dyncontent">
<div class="center"><iframe scrolling="no" frameborder="0" src="classipc_1_1transport_1_1Posix__mq__handle_abe2b3968c60945224ddfce119bcae018_icgraph.svg" width="170" height="71"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
</div>
</div>

</div>
</div>
<a id="a64079f1c9315af2e75e808b6ae5312e5" name="a64079f1c9315af2e75e808b6ae5312e5"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a64079f1c9315af2e75e808b6ae5312e5">&#9670;&nbsp;</a></span>timed_wait_receivable()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool ipc::transport::Posix_mq_handle::timed_wait_receivable </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="namespaceipc_1_1util.html#ac66141280c3b7295a86b65209f31cc58">util::Fine_duration</a>&#160;</td>
          <td class="paramname"><em>timeout_from_now</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="namespaceipc.html#aa3192e586cc45d3e7c22463bf2760f89">Error_code</a> *&#160;</td>
          <td class="paramname"><em>err_code</em> = <code>0</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Implements <a class="el" href="classipc_1_1transport_1_1Persistent__mq__handle.html" title="A documentation-only concept defining the behavior of an object representing a light-weight handle to...">Persistent_mq_handle</a> API: Like <a class="el" href="classipc_1_1transport_1_1Posix__mq__handle.html#aa853452d0d0aeeaf61461cc8a48b5c09" title="Implements Persistent_mq_handle API: Blocking timed receive: pops copy of message from queue into buf...">timed_receive()</a> but without the actual popping of a message. </p>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="classipc_1_1transport_1_1Persistent__mq__handle.html#ac4f13853e38ade577faabbf9ef0af74f" title="Equivalent to timed_receive() except stops short of reading anything, with true result indicating tha...">Persistent_mq_handle::timed_wait_receivable()</a>: implemented concept.</dd></dl>
<h3>INFO+ logging</h3>
<p >WARNING on error.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">err_code</td><td>See above. </td></tr>
    <tr><td class="paramname">timeout_from_now</td><td>See above. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>See above. </dd></dl>

<p class="definition">Definition at line <a class="el" href="posix__mq__handle_8cpp_source.html#l01294">1294</a> of file <a class="el" href="posix__mq__handle_8cpp_source.html">posix_mq_handle.cpp</a>.</p>

<p class="reference">References <a class="el" href="posix__mq__handle_8cpp_source.html#l01178">wait_impl()</a>.</p>

<p class="reference">Referenced by <a class="el" href="posix__mq__handle_8cpp_source.html#l00994">timed_receive()</a>.</p>
<div class="dynheader">
Here is the call graph for this function:</div>
<div class="dyncontent">
<div class="center"><iframe scrolling="no" frameborder="0" src="classipc_1_1transport_1_1Posix__mq__handle_a64079f1c9315af2e75e808b6ae5312e5_cgraph.svg" width="558" height="78"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
</div>
</div>
<div class="dynheader">
Here is the caller graph for this function:</div>
<div class="dyncontent">
<div class="center"><iframe scrolling="no" frameborder="0" src="classipc_1_1transport_1_1Posix__mq__handle_a64079f1c9315af2e75e808b6ae5312e5_icgraph.svg" width="384" height="78"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
</div>
</div>

</div>
</div>
<a id="aa46ffcc8019c998313c18ed05b7c6ad3" name="aa46ffcc8019c998313c18ed05b7c6ad3"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa46ffcc8019c998313c18ed05b7c6ad3">&#9670;&nbsp;</a></span>timed_wait_sendable()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool ipc::transport::Posix_mq_handle::timed_wait_sendable </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="namespaceipc_1_1util.html#ac66141280c3b7295a86b65209f31cc58">util::Fine_duration</a>&#160;</td>
          <td class="paramname"><em>timeout_from_now</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="namespaceipc.html#aa3192e586cc45d3e7c22463bf2760f89">Error_code</a> *&#160;</td>
          <td class="paramname"><em>err_code</em> = <code>0</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Implements <a class="el" href="classipc_1_1transport_1_1Persistent__mq__handle.html" title="A documentation-only concept defining the behavior of an object representing a light-weight handle to...">Persistent_mq_handle</a> API: Like <a class="el" href="classipc_1_1transport_1_1Posix__mq__handle.html#abe2b3968c60945224ddfce119bcae018" title="Implements Persistent_mq_handle API: Blocking timed send: pushes copy of message to queue; if queue i...">timed_send()</a> but without the actual pushing of a message. </p>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="classipc_1_1transport_1_1Persistent__mq__handle.html#aadfffb71ff2fec6508174fdf4b08327e" title="Equivalent to timed_send() except stops short of writing anything, with true result indicating that t...">Persistent_mq_handle::timed_wait_sendable()</a>: implemented concept.</dd></dl>
<h3>INFO+ logging</h3>
<p >WARNING on error.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">err_code</td><td>See above. </td></tr>
    <tr><td class="paramname">timeout_from_now</td><td>See above. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>See above. </dd></dl>

<p class="definition">Definition at line <a class="el" href="posix__mq__handle_8cpp_source.html#l01279">1279</a> of file <a class="el" href="posix__mq__handle_8cpp_source.html">posix_mq_handle.cpp</a>.</p>

<p class="reference">References <a class="el" href="posix__mq__handle_8cpp_source.html#l01178">wait_impl()</a>.</p>

<p class="reference">Referenced by <a class="el" href="posix__mq__handle_8cpp_source.html#l00796">timed_send()</a>.</p>
<div class="dynheader">
Here is the call graph for this function:</div>
<div class="dyncontent">
<div class="center"><iframe scrolling="no" frameborder="0" src="classipc_1_1transport_1_1Posix__mq__handle_aa46ffcc8019c998313c18ed05b7c6ad3_cgraph.svg" width="558" height="78"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
</div>
</div>
<div class="dynheader">
Here is the caller graph for this function:</div>
<div class="dyncontent">
<div class="center"><iframe scrolling="no" frameborder="0" src="classipc_1_1transport_1_1Posix__mq__handle_aa46ffcc8019c998313c18ed05b7c6ad3_icgraph.svg" width="372" height="78"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
</div>
</div>

</div>
</div>
<a id="abe9a423ceda292d5b01b54039102170b" name="abe9a423ceda292d5b01b54039102170b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#abe9a423ceda292d5b01b54039102170b">&#9670;&nbsp;</a></span>try_receive()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool ipc::transport::Posix_mq_handle::try_receive </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="namespaceipc_1_1util.html#a6cb62ae434900f3a8915b33ec5d61a96">util::Blob_mutable</a> *&#160;</td>
          <td class="paramname"><em>blob</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="namespaceipc.html#aa3192e586cc45d3e7c22463bf2760f89">Error_code</a> *&#160;</td>
          <td class="paramname"><em>err_code</em> = <code>0</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Implements <a class="el" href="classipc_1_1transport_1_1Persistent__mq__handle.html" title="A documentation-only concept defining the behavior of an object representing a light-weight handle to...">Persistent_mq_handle</a> API: Non-blocking receive: pops copy of message from queue into buffer and returns <code>true</code>; if queue is empty then no-op and returns <code>false</code>. </p>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="classipc_1_1transport_1_1Persistent__mq__handle.html#a84f802c77b0ce93d59e7ac78839f14cc" title="Non-blocking receive: pops copy of message from queue into buffer and returns true; if queue is empty...">Persistent_mq_handle::try_receive()</a>: implemented concept.</dd></dl>
<h3>INFO+ logging</h3>
<p >WARNING on error. (You may use the <code>flow::log::Config::this_thread_verbosity_override_auto()</code> to temporarily, in that thread only, disable/reduce logging. This is quite easy and performant.)</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">blob</td><td>See above. </td></tr>
    <tr><td class="paramname">err_code</td><td>See above. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>See above. </dd></dl>

<p class="definition">Definition at line <a class="el" href="posix__mq__handle_8cpp_source.html#l00880">880</a> of file <a class="el" href="posix__mq__handle_8cpp_source.html">posix_mq_handle.cpp</a>.</p>

<p class="reference">References <a class="el" href="posix__mq__handle_8cpp_source.html#l01335">handle_mq_api_result()</a>, <a class="el" href="posix__mq__handle_8hpp_source.html#l00627">m_mq</a>, <a class="el" href="native__handle_8hpp_source.html#l00085">ipc::util::Native_handle::m_native_handle</a>, <a class="el" href="native__handle_8cpp_source.html#l00061">ipc::util::Native_handle::null()</a>, and <a class="el" href="posix__mq__handle_8cpp_source.html#l00880">try_receive()</a>.</p>

<p class="reference">Referenced by <a class="el" href="posix__mq__handle_8cpp_source.html#l00880">try_receive()</a>.</p>
<div class="dynheader">
Here is the call graph for this function:</div>
<div class="dyncontent">
<div class="center"><iframe scrolling="no" frameborder="0" src="classipc_1_1transport_1_1Posix__mq__handle_abe9a423ceda292d5b01b54039102170b_cgraph.svg" width="368" height="120"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
</div>
</div>
<div class="dynheader">
Here is the caller graph for this function:</div>
<div class="dyncontent">
<div class="center"><iframe scrolling="no" frameborder="0" src="classipc_1_1transport_1_1Posix__mq__handle_abe9a423ceda292d5b01b54039102170b_icgraph.svg" width="166" height="71"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
</div>
</div>

</div>
</div>
<a id="a5787b3fe1eb2a7f5f6abda8b9536529b" name="a5787b3fe1eb2a7f5f6abda8b9536529b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a5787b3fe1eb2a7f5f6abda8b9536529b">&#9670;&nbsp;</a></span>try_send()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool ipc::transport::Posix_mq_handle::try_send </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="namespaceipc_1_1util.html#ae0be7edba7e30ffa3f8b742af621f2ab">util::Blob_const</a> &amp;&#160;</td>
          <td class="paramname"><em>blob</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="namespaceipc.html#aa3192e586cc45d3e7c22463bf2760f89">Error_code</a> *&#160;</td>
          <td class="paramname"><em>err_code</em> = <code>0</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Implements <a class="el" href="classipc_1_1transport_1_1Persistent__mq__handle.html" title="A documentation-only concept defining the behavior of an object representing a light-weight handle to...">Persistent_mq_handle</a> API: Non-blocking send: pushes copy of message to queue and returns <code>true</code>; if queue is full then no-op and returns <code>false</code>. </p>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="classipc_1_1transport_1_1Persistent__mq__handle.html#ad9d38e0e16931dd96738d53b787533a1" title="Non-blocking send: pushes copy of message to queue and returns true; if queue is full then no-op and ...">Persistent_mq_handle::try_send()</a>: implemented concept.</dd></dl>
<h3>INFO+ logging</h3>
<p >WARNING on error. (You may use the <code>flow::log::Config::this_thread_verbosity_override_auto()</code> to temporarily, in that thread only, disable/reduce logging. This is quite easy and performant.)</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">blob</td><td>See above. </td></tr>
    <tr><td class="paramname">err_code</td><td>See above. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>See above. </dd></dl>

<p class="definition">Definition at line <a class="el" href="posix__mq__handle_8cpp_source.html#l00678">678</a> of file <a class="el" href="posix__mq__handle_8cpp_source.html">posix_mq_handle.cpp</a>.</p>

<p class="reference">References <a class="el" href="ipc__core_2src_2ipc_2util_2util_8cpp_source.html#l00158">ipc::util::blob_data()</a>, <a class="el" href="posix__mq__handle_8cpp_source.html#l01335">handle_mq_api_result()</a>, <a class="el" href="posix__mq__handle_8hpp_source.html#l00627">m_mq</a>, <a class="el" href="native__handle_8hpp_source.html#l00085">ipc::util::Native_handle::m_native_handle</a>, <a class="el" href="native__handle_8cpp_source.html#l00061">ipc::util::Native_handle::null()</a>, and <a class="el" href="posix__mq__handle_8cpp_source.html#l00678">try_send()</a>.</p>

<p class="reference">Referenced by <a class="el" href="posix__mq__handle_8cpp_source.html#l00678">try_send()</a>.</p>
<div class="dynheader">
Here is the call graph for this function:</div>
<div class="dyncontent">
<div class="center"><iframe scrolling="no" frameborder="0" src="classipc_1_1transport_1_1Posix__mq__handle_a5787b3fe1eb2a7f5f6abda8b9536529b_cgraph.svg" width="355" height="168"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
</div>
</div>
<div class="dynheader">
Here is the caller graph for this function:</div>
<div class="dyncontent">
<div class="center"><iframe scrolling="no" frameborder="0" src="classipc_1_1transport_1_1Posix__mq__handle_a5787b3fe1eb2a7f5f6abda8b9536529b_icgraph.svg" width="152" height="71"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
</div>
</div>

</div>
</div>
<a id="a64e44dd9a0e2ba1f870a231ffcf02fb9" name="a64e44dd9a0e2ba1f870a231ffcf02fb9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a64e44dd9a0e2ba1f870a231ffcf02fb9">&#9670;&nbsp;</a></span>wait_impl()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">bool ipc::transport::Posix_mq_handle::wait_impl </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="namespaceipc_1_1util.html#ac66141280c3b7295a86b65209f31cc58">util::Fine_duration</a>&#160;</td>
          <td class="paramname"><em>timeout_from_now_or_none</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">bool&#160;</td>
          <td class="paramname"><em>snd_else_rcv</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="namespaceipc.html#aa3192e586cc45d3e7c22463bf2760f89">Error_code</a> *&#160;</td>
          <td class="paramname"><em>err_code</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Impl body for <code>*_sendable()</code> and <code>*_receivable()</code>. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">timeout_from_now_or_none</td><td><code>timeout_from_now</code>; or 0 for <code>is_*()</code>, or <code>Fine_duration::max()</code> for non-timed-blocking variant. </td></tr>
    <tr><td class="paramname">snd_else_rcv</td><td>True for <code>*_sendable()</code>, else <code>*_receivable()</code>. </td></tr>
    <tr><td class="paramname">err_code</td><td>See callers. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>See callers. </dd></dl>

<p class="definition">Definition at line <a class="el" href="posix__mq__handle_8cpp_source.html#l01178">1178</a> of file <a class="el" href="posix__mq__handle_8cpp_source.html">posix_mq_handle.cpp</a>.</p>

<p class="reference">References <a class="el" href="posix__mq__handle_8hpp_source.html#l00644">m_epoll_hndl_rcv</a>, <a class="el" href="posix__mq__handle_8hpp_source.html#l00637">m_epoll_hndl_snd</a>, <a class="el" href="posix__mq__handle_8hpp_source.html#l00627">m_mq</a>, <a class="el" href="native__handle_8hpp_source.html#l00085">ipc::util::Native_handle::m_native_handle</a>, <a class="el" href="native__handle_8cpp_source.html#l00061">ipc::util::Native_handle::null()</a>, <a class="el" href="namespaceipc_1_1transport_1_1error.html#adfef15ef4e76cc55d652fbd9c2797297a291f8a813c292ccdb475c345181653ac">ipc::transport::error::S_INTERRUPTED</a>, and <a class="el" href="posix__mq__handle_8cpp_source.html#l01178">wait_impl()</a>.</p>

<p class="reference">Referenced by <a class="el" href="posix__mq__handle_8cpp_source.html#l01284">is_receivable()</a>, <a class="el" href="posix__mq__handle_8cpp_source.html#l01269">is_sendable()</a>, <a class="el" href="posix__mq__handle_8cpp_source.html#l01294">timed_wait_receivable()</a>, <a class="el" href="posix__mq__handle_8cpp_source.html#l01279">timed_wait_sendable()</a>, <a class="el" href="posix__mq__handle_8cpp_source.html#l01178">wait_impl()</a>, <a class="el" href="posix__mq__handle_8cpp_source.html#l01289">wait_receivable()</a>, and <a class="el" href="posix__mq__handle_8cpp_source.html#l01274">wait_sendable()</a>.</p>
<div class="dynheader">
Here is the call graph for this function:</div>
<div class="dyncontent">
<div class="center"><iframe scrolling="no" frameborder="0" src="classipc_1_1transport_1_1Posix__mq__handle_a64e44dd9a0e2ba1f870a231ffcf02fb9_cgraph.svg" width="355" height="71"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
</div>
</div>
<div class="dynheader">
Here is the caller graph for this function:</div>
<div class="dyncontent">
<div class="center"><iframe scrolling="no" frameborder="0" src="classipc_1_1transport_1_1Posix__mq__handle_a64e44dd9a0e2ba1f870a231ffcf02fb9_icgraph.svg" width="604" height="408"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
</div>
</div>

</div>
</div>
<a id="a0f93df71d0c476e17b32ca4d6bf82b9b" name="a0f93df71d0c476e17b32ca4d6bf82b9b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0f93df71d0c476e17b32ca4d6bf82b9b">&#9670;&nbsp;</a></span>wait_receivable()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void ipc::transport::Posix_mq_handle::wait_receivable </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="namespaceipc.html#aa3192e586cc45d3e7c22463bf2760f89">Error_code</a> *&#160;</td>
          <td class="paramname"><em>err_code</em> = <code>0</code></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Implements <a class="el" href="classipc_1_1transport_1_1Persistent__mq__handle.html" title="A documentation-only concept defining the behavior of an object representing a light-weight handle to...">Persistent_mq_handle</a> API: Like <a class="el" href="classipc_1_1transport_1_1Posix__mq__handle.html#a65f35bfe249b13dc3bc0442d10a55a0f" title="Implements Persistent_mq_handle API: Blocking receive: pops copy of message from queue into buffer; i...">receive()</a> but without the actual popping of a message. </p>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="classipc_1_1transport_1_1Persistent__mq__handle.html#a7029f9601aa268022bd8cf7970c512c8" title="Equivalent to receive() except stops short of reading anything, with non-error return indicating that...">Persistent_mq_handle::wait_receivable()</a>: implemented concept.</dd></dl>
<h3>INFO+ logging</h3>
<p >WARNING on error.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">err_code</td><td>See above. </td></tr>
  </table>
  </dd>
</dl>

<p class="definition">Definition at line <a class="el" href="posix__mq__handle_8cpp_source.html#l01289">1289</a> of file <a class="el" href="posix__mq__handle_8cpp_source.html">posix_mq_handle.cpp</a>.</p>

<p class="reference">References <a class="el" href="posix__mq__handle_8cpp_source.html#l01178">wait_impl()</a>.</p>

<p class="reference">Referenced by <a class="el" href="posix__mq__handle_8cpp_source.html#l00926">receive()</a>.</p>
<div class="dynheader">
Here is the call graph for this function:</div>
<div class="dyncontent">
<div class="center"><iframe scrolling="no" frameborder="0" src="classipc_1_1transport_1_1Posix__mq__handle_a0f93df71d0c476e17b32ca4d6bf82b9b_cgraph.svg" width="583" height="71"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
</div>
</div>
<div class="dynheader">
Here is the caller graph for this function:</div>
<div class="dyncontent">
<div class="center"><iframe scrolling="no" frameborder="0" src="classipc_1_1transport_1_1Posix__mq__handle_a0f93df71d0c476e17b32ca4d6bf82b9b_icgraph.svg" width="374" height="71"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
</div>
</div>

</div>
</div>
<a id="acf32c33a96d66436628153c74d4a8eb9" name="acf32c33a96d66436628153c74d4a8eb9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#acf32c33a96d66436628153c74d4a8eb9">&#9670;&nbsp;</a></span>wait_sendable()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void ipc::transport::Posix_mq_handle::wait_sendable </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="namespaceipc.html#aa3192e586cc45d3e7c22463bf2760f89">Error_code</a> *&#160;</td>
          <td class="paramname"><em>err_code</em> = <code>0</code></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Implements <a class="el" href="classipc_1_1transport_1_1Persistent__mq__handle.html" title="A documentation-only concept defining the behavior of an object representing a light-weight handle to...">Persistent_mq_handle</a> API: Like <a class="el" href="classipc_1_1transport_1_1Posix__mq__handle.html#a6e9b11537c7c83f43728aca7af348a42" title="Implements Persistent_mq_handle API: Blocking send: pushes copy of message to queue; if queue is full...">send()</a> but without the actual pushing of a message. </p>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="classipc_1_1transport_1_1Persistent__mq__handle.html#a230060aa545bfe11eb263211c84514f1" title="Equivalent to send() except stops short of writing anything, with non-error return indicating that tr...">Persistent_mq_handle::wait_sendable()</a>: implemented concept.</dd></dl>
<h3>INFO+ logging</h3>
<p >WARNING on error.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">err_code</td><td>See above. </td></tr>
  </table>
  </dd>
</dl>

<p class="definition">Definition at line <a class="el" href="posix__mq__handle_8cpp_source.html#l01274">1274</a> of file <a class="el" href="posix__mq__handle_8cpp_source.html">posix_mq_handle.cpp</a>.</p>

<p class="reference">References <a class="el" href="posix__mq__handle_8cpp_source.html#l01178">wait_impl()</a>.</p>

<p class="reference">Referenced by <a class="el" href="posix__mq__handle_8cpp_source.html#l00728">send()</a>.</p>
<div class="dynheader">
Here is the call graph for this function:</div>
<div class="dyncontent">
<div class="center"><iframe scrolling="no" frameborder="0" src="classipc_1_1transport_1_1Posix__mq__handle_acf32c33a96d66436628153c74d4a8eb9_cgraph.svg" width="578" height="71"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
</div>
</div>
<div class="dynheader">
Here is the caller graph for this function:</div>
<div class="dyncontent">
<div class="center"><iframe scrolling="no" frameborder="0" src="classipc_1_1transport_1_1Posix__mq__handle_acf32c33a96d66436628153c74d4a8eb9_icgraph.svg" width="366" height="71"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
</div>
</div>

</div>
</div>
<h2 class="groupheader">Friends And Related Function Documentation</h2>
<a id="a8fb9256b66ad3dfdf742de66223466d7" name="a8fb9256b66ad3dfdf742de66223466d7"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8fb9256b66ad3dfdf742de66223466d7">&#9670;&nbsp;</a></span>operator&lt;&lt;()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">std::ostream &amp; operator&lt;&lt; </td>
          <td>(</td>
          <td class="paramtype">std::ostream &amp;&#160;</td>
          <td class="paramname"><em>os</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classipc_1_1transport_1_1Posix__mq__handle.html">Posix_mq_handle</a> &amp;&#160;</td>
          <td class="paramname"><em>val</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">related</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Prints string representation of the given <a class="el" href="classipc_1_1transport_1_1Posix__mq__handle.html" title="Implements the Persistent_mq_handle concept by wrapping the POSIX message queue API (see man mq_overv...">Posix_mq_handle</a> to the given <code>ostream</code>. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">os</td><td>Stream to which to write. </td></tr>
    <tr><td class="paramname">val</td><td>Object to serialize. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd><code>os</code>. </dd></dl>

<p class="definition">Definition at line <a class="el" href="posix__mq__handle_8cpp_source.html#l01362">1362</a> of file <a class="el" href="posix__mq__handle_8cpp_source.html">posix_mq_handle.cpp</a>.</p>

<p class="reference">References <a class="el" href="posix__mq__handle_8cpp_source.html#l01357">absolute_name()</a>, and <a class="el" href="posix__mq__handle_8cpp_source.html#l01299">native_handle()</a>.</p>
<div class="dynheader">
Here is the call graph for this function:</div>
<div class="dyncontent">
<div class="center"><iframe scrolling="no" frameborder="0" src="classipc_1_1transport_1_1Posix__mq__handle_a8fb9256b66ad3dfdf742de66223466d7_cgraph.svg" width="398" height="107"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
</div>
</div>

</div>
</div>
<a id="a65015c97813a6609da035fe86d1a36c0" name="a65015c97813a6609da035fe86d1a36c0"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a65015c97813a6609da035fe86d1a36c0">&#9670;&nbsp;</a></span>swap <span class="overload">[1/2]</span></h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void swap </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classipc_1_1transport_1_1Posix__mq__handle.html">Posix_mq_handle</a> &amp;&#160;</td>
          <td class="paramname"><em>val1</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="classipc_1_1transport_1_1Posix__mq__handle.html">Posix_mq_handle</a> &amp;&#160;</td>
          <td class="paramname"><em>val2</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">friend</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Implements <a class="el" href="classipc_1_1transport_1_1Persistent__mq__handle.html" title="A documentation-only concept defining the behavior of an object representing a light-weight handle to...">Persistent_mq_handle</a> related concept: Swaps two objects. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">val1</td><td>Object. </td></tr>
    <tr><td class="paramname">val2</td><td>Object. </td></tr>
  </table>
  </dd>
</dl>

<p class="definition">Definition at line <a class="el" href="posix__mq__handle_8cpp_source.html#l00545">545</a> of file <a class="el" href="posix__mq__handle_8cpp_source.html">posix_mq_handle.cpp</a>.</p>

<p class="reference">Referenced by <a class="el" href="posix__mq__handle_8cpp_source.html#l00525">operator=()</a>.</p>

</div>
</div>
<a id="a65015c97813a6609da035fe86d1a36c0" name="a65015c97813a6609da035fe86d1a36c0"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a65015c97813a6609da035fe86d1a36c0">&#9670;&nbsp;</a></span>swap() <span class="overload">[2/2]</span></h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void swap </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classipc_1_1transport_1_1Posix__mq__handle.html">Posix_mq_handle</a> &amp;&#160;</td>
          <td class="paramname"><em>val1</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="classipc_1_1transport_1_1Posix__mq__handle.html">Posix_mq_handle</a> &amp;&#160;</td>
          <td class="paramname"><em>val2</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">related</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Implements <a class="el" href="classipc_1_1transport_1_1Persistent__mq__handle.html" title="A documentation-only concept defining the behavior of an object representing a light-weight handle to...">Persistent_mq_handle</a> related concept: Swaps two objects. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">val1</td><td>Object. </td></tr>
    <tr><td class="paramname">val2</td><td>Object. </td></tr>
  </table>
  </dd>
</dl>

<p class="definition">Definition at line <a class="el" href="posix__mq__handle_8cpp_source.html#l00545">545</a> of file <a class="el" href="posix__mq__handle_8cpp_source.html">posix_mq_handle.cpp</a>.</p>

</div>
</div>
<h2 class="groupheader">Member Data Documentation</h2>
<a id="ab6fae02d734897a9149a7b271a146f41" name="ab6fae02d734897a9149a7b271a146f41"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab6fae02d734897a9149a7b271a146f41">&#9670;&nbsp;</a></span>m_absolute_name</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="namespaceipc_1_1transport.html#a33de1c256addb3964b839dc2dd407d24">Shared_name</a> ipc::transport::Posix_mq_handle::m_absolute_name</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>See <a class="el" href="classipc_1_1transport_1_1Posix__mq__handle.html#a7d62af06a8cea2a821908384ee098125" title="Implements Persistent_mq_handle API: Returns name equal to absolute_name passed to ctor.">absolute_name()</a>. </p>

<p class="definition">Definition at line <a class="el" href="posix__mq__handle_8hpp_source.html#l00630">630</a> of file <a class="el" href="posix__mq__handle_8hpp_source.html">posix_mq_handle.hpp</a>.</p>

<p class="reference">Referenced by <a class="el" href="posix__mq__handle_8cpp_source.html#l01357">absolute_name()</a>, and <a class="el" href="posix__mq__handle_8cpp_source.html#l00525">operator=()</a>.</p>

</div>
</div>
<a id="a859113a2c5248287efc55115654ec0ac" name="a859113a2c5248287efc55115654ec0ac"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a859113a2c5248287efc55115654ec0ac">&#9670;&nbsp;</a></span>m_epoll_hndl_rcv</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="namespaceipc_1_1transport.html#a7ee4551983d9df16ec16a3139bac50e8">Native_handle</a> ipc::transport::Posix_mq_handle::m_epoll_hndl_rcv</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p><code>epoll_*()</code> handle (<code>.null()</code> if and only if <a class="el" href="classipc_1_1transport_1_1Posix__mq__handle.html#ae9465f6fe5c2d36bcbe747fe1bf8d995" title="Underlying MQ handle.">m_mq</a> is null) that is level-triggered to be active (with only 1 event registered) if and only if <a class="el" href="classipc_1_1transport_1_1Posix__mq__handle.html#ae9465f6fe5c2d36bcbe747fe1bf8d995" title="Underlying MQ handle.">m_mq</a> is currently storing at least 1 message (we could pop 1+ messages right now). </p>
<p >Used by <a class="el" href="classipc_1_1transport_1_1Posix__mq__handle.html#a64e44dd9a0e2ba1f870a231ffcf02fb9" title="Impl body for *_sendable() and *_receivable().">wait_impl()</a> and its various public <code>*_receivable()</code> forms. </p>

<p class="definition">Definition at line <a class="el" href="posix__mq__handle_8hpp_source.html#l00644">644</a> of file <a class="el" href="posix__mq__handle_8hpp_source.html">posix_mq_handle.hpp</a>.</p>

<p class="reference">Referenced by <a class="el" href="posix__mq__handle_8cpp_source.html#l00404">epoll_setup()</a>, <a class="el" href="posix__mq__handle_8cpp_source.html#l00525">operator=()</a>, <a class="el" href="posix__mq__handle_8cpp_source.html#l01178">wait_impl()</a>, and <a class="el" href="posix__mq__handle_8cpp_source.html#l00501">~Posix_mq_handle()</a>.</p>

</div>
</div>
<a id="a339b2a92eb51f445752b798e17560bd4" name="a339b2a92eb51f445752b798e17560bd4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a339b2a92eb51f445752b798e17560bd4">&#9670;&nbsp;</a></span>m_epoll_hndl_snd</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="namespaceipc_1_1transport.html#a7ee4551983d9df16ec16a3139bac50e8">Native_handle</a> ipc::transport::Posix_mq_handle::m_epoll_hndl_snd</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p><code>epoll_*()</code> handle (<code>.null()</code> if and only if <a class="el" href="classipc_1_1transport_1_1Posix__mq__handle.html#ae9465f6fe5c2d36bcbe747fe1bf8d995" title="Underlying MQ handle.">m_mq</a> is null) that is level-triggered to be active (with only 1 event registered) if and only if <a class="el" href="classipc_1_1transport_1_1Posix__mq__handle.html#ae9465f6fe5c2d36bcbe747fe1bf8d995" title="Underlying MQ handle.">m_mq</a> is currently capable of sending at least 1 message (we could push 1+ messages right now). </p>
<p >Used by <a class="el" href="classipc_1_1transport_1_1Posix__mq__handle.html#a64e44dd9a0e2ba1f870a231ffcf02fb9" title="Impl body for *_sendable() and *_receivable().">wait_impl()</a> and its various public <code>*_sendable()</code> forms. </p>

<p class="definition">Definition at line <a class="el" href="posix__mq__handle_8hpp_source.html#l00637">637</a> of file <a class="el" href="posix__mq__handle_8hpp_source.html">posix_mq_handle.hpp</a>.</p>

<p class="reference">Referenced by <a class="el" href="posix__mq__handle_8cpp_source.html#l00404">epoll_setup()</a>, <a class="el" href="posix__mq__handle_8cpp_source.html#l00525">operator=()</a>, <a class="el" href="posix__mq__handle_8cpp_source.html#l01178">wait_impl()</a>, and <a class="el" href="posix__mq__handle_8cpp_source.html#l00501">~Posix_mq_handle()</a>.</p>

</div>
</div>
<a id="a41b284b4476d7b51feceb57f4d0f6ddc" name="a41b284b4476d7b51feceb57f4d0f6ddc"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a41b284b4476d7b51feceb57f4d0f6ddc">&#9670;&nbsp;</a></span>m_interrupt_detector_rcv</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classipc_1_1transport_1_1Posix__mq__handle.html#a0cf6cf0cd88b34cfd7dd93d66e383f95">Pipe_reader</a> ipc::transport::Posix_mq_handle::m_interrupt_detector_rcv</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Other-direction counterpart to <a class="el" href="classipc_1_1transport_1_1Posix__mq__handle.html#a28e4beb79afeac4832e6b0e1118148e9" title="A byte is read from this end by allow_sends() to make it not-readable for the poll-wait in wait_impl(...">m_interrupt_detector_snd</a>. </p>

<p class="definition">Definition at line <a class="el" href="posix__mq__handle_8hpp_source.html#l00676">676</a> of file <a class="el" href="posix__mq__handle_8hpp_source.html">posix_mq_handle.hpp</a>.</p>

<p class="reference">Referenced by <a class="el" href="posix__mq__handle_8cpp_source.html#l01118">allow_impl()</a>, <a class="el" href="posix__mq__handle_8cpp_source.html#l00404">epoll_setup()</a>, <a class="el" href="posix__mq__handle_8cpp_source.html#l00525">operator=()</a>, and <a class="el" href="posix__mq__handle_8cpp_source.html#l00377">pipe_setup()</a>.</p>

</div>
</div>
<a id="a28e4beb79afeac4832e6b0e1118148e9" name="a28e4beb79afeac4832e6b0e1118148e9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a28e4beb79afeac4832e6b0e1118148e9">&#9670;&nbsp;</a></span>m_interrupt_detector_snd</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classipc_1_1transport_1_1Posix__mq__handle.html#a0cf6cf0cd88b34cfd7dd93d66e383f95">Pipe_reader</a> ipc::transport::Posix_mq_handle::m_interrupt_detector_snd</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>A byte is read from this end by <a class="el" href="classipc_1_1transport_1_1Posix__mq__handle.html#a01d842eb304fff361d72a090113ffc9f" title="Implements Persistent_mq_handle API: Turn off preemptive/concurrent interruption of blocking-sends an...">allow_sends()</a> to make it not-readable for the poll-wait in <a class="el" href="classipc_1_1transport_1_1Posix__mq__handle.html#a64e44dd9a0e2ba1f870a231ffcf02fb9" title="Impl body for *_sendable() and *_receivable().">wait_impl()</a> indicating that <a class="el" href="classipc_1_1transport_1_1Posix__mq__handle.html#a75eac3aa00f897013338aebbfa00b7e2" title="Starting at false, this is made true via interrupt_sends(), and back by allow_sends(); acts as a guar...">m_interrupting_snd</a> mode is off; and <a class="el" href="classipc_1_1transport_1_1Posix__mq__handle.html#a64e44dd9a0e2ba1f870a231ffcf02fb9" title="Impl body for *_sendable() and *_receivable().">wait_impl()</a> poll-waits on this along with <a class="el" href="classipc_1_1transport_1_1Posix__mq__handle.html#ae9465f6fe5c2d36bcbe747fe1bf8d995" title="Underlying MQ handle.">m_mq</a> &ndash; if it is readable, then the mode is on. </p>

<p class="definition">Definition at line <a class="el" href="posix__mq__handle_8hpp_source.html#l00670">670</a> of file <a class="el" href="posix__mq__handle_8hpp_source.html">posix_mq_handle.hpp</a>.</p>

<p class="reference">Referenced by <a class="el" href="posix__mq__handle_8cpp_source.html#l01118">allow_impl()</a>, <a class="el" href="posix__mq__handle_8cpp_source.html#l00404">epoll_setup()</a>, <a class="el" href="posix__mq__handle_8cpp_source.html#l00525">operator=()</a>, and <a class="el" href="posix__mq__handle_8cpp_source.html#l00377">pipe_setup()</a>.</p>

</div>
</div>
<a id="a5b206bcb3928bac2afb08daa0bc699fc" name="a5b206bcb3928bac2afb08daa0bc699fc"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a5b206bcb3928bac2afb08daa0bc699fc">&#9670;&nbsp;</a></span>m_interrupter_rcv</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classipc_1_1transport_1_1Posix__mq__handle.html#a4bf3bfa8192e7d73e52054c63919187a">Pipe_writer</a> ipc::transport::Posix_mq_handle::m_interrupter_rcv</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Other-direction counterpart to <a class="el" href="classipc_1_1transport_1_1Posix__mq__handle.html#ae77e18be8f9e7de1fba382572ce18c99" title="A byte is written to this end by interrupt_sends() to make it readable for the poll-wait in wait_impl...">m_interrupter_snd</a>. </p>

<p class="definition">Definition at line <a class="el" href="posix__mq__handle_8hpp_source.html#l00673">673</a> of file <a class="el" href="posix__mq__handle_8hpp_source.html">posix_mq_handle.hpp</a>.</p>

<p class="reference">Referenced by <a class="el" href="posix__mq__handle_8cpp_source.html#l00404">epoll_setup()</a>, <a class="el" href="posix__mq__handle_8cpp_source.html#l01079">interrupt_impl()</a>, <a class="el" href="posix__mq__handle_8cpp_source.html#l00525">operator=()</a>, and <a class="el" href="posix__mq__handle_8cpp_source.html#l00377">pipe_setup()</a>.</p>

</div>
</div>
<a id="ae77e18be8f9e7de1fba382572ce18c99" name="ae77e18be8f9e7de1fba382572ce18c99"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae77e18be8f9e7de1fba382572ce18c99">&#9670;&nbsp;</a></span>m_interrupter_snd</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classipc_1_1transport_1_1Posix__mq__handle.html#a4bf3bfa8192e7d73e52054c63919187a">Pipe_writer</a> ipc::transport::Posix_mq_handle::m_interrupter_snd</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>A byte is written to this end by <a class="el" href="classipc_1_1transport_1_1Posix__mq__handle.html#a0afe8a636902116223b4f33f081119df" title="Implements Persistent_mq_handle API: Turn on preemptive/concurrent interruption of blocking-sends and...">interrupt_sends()</a> to make it readable for the poll-wait in <a class="el" href="classipc_1_1transport_1_1Posix__mq__handle.html#a64e44dd9a0e2ba1f870a231ffcf02fb9" title="Impl body for *_sendable() and *_receivable().">wait_impl()</a> indicating that <a class="el" href="classipc_1_1transport_1_1Posix__mq__handle.html#a75eac3aa00f897013338aebbfa00b7e2" title="Starting at false, this is made true via interrupt_sends(), and back by allow_sends(); acts as a guar...">m_interrupting_snd</a> mode is on. </p>

<p class="definition">Definition at line <a class="el" href="posix__mq__handle_8hpp_source.html#l00663">663</a> of file <a class="el" href="posix__mq__handle_8hpp_source.html">posix_mq_handle.hpp</a>.</p>

<p class="reference">Referenced by <a class="el" href="posix__mq__handle_8cpp_source.html#l00404">epoll_setup()</a>, <a class="el" href="posix__mq__handle_8cpp_source.html#l01079">interrupt_impl()</a>, <a class="el" href="posix__mq__handle_8cpp_source.html#l00525">operator=()</a>, and <a class="el" href="posix__mq__handle_8cpp_source.html#l00377">pipe_setup()</a>.</p>

</div>
</div>
<a id="ae1ec26a4ea667cfc04d4de889b14ed68" name="ae1ec26a4ea667cfc04d4de889b14ed68"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae1ec26a4ea667cfc04d4de889b14ed68">&#9670;&nbsp;</a></span>m_interrupting_rcv</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">bool ipc::transport::Posix_mq_handle::m_interrupting_rcv</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Other-direction counterpart to <a class="el" href="classipc_1_1transport_1_1Posix__mq__handle.html#a75eac3aa00f897013338aebbfa00b7e2" title="Starting at false, this is made true via interrupt_sends(), and back by allow_sends(); acts as a guar...">m_interrupting_snd</a>. </p>

<p class="definition">Definition at line <a class="el" href="posix__mq__handle_8hpp_source.html#l00654">654</a> of file <a class="el" href="posix__mq__handle_8hpp_source.html">posix_mq_handle.hpp</a>.</p>

<p class="reference">Referenced by <a class="el" href="posix__mq__handle_8cpp_source.html#l01118">allow_impl()</a>, and <a class="el" href="posix__mq__handle_8cpp_source.html#l01079">interrupt_impl()</a>.</p>

</div>
</div>
<a id="a75eac3aa00f897013338aebbfa00b7e2" name="a75eac3aa00f897013338aebbfa00b7e2"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a75eac3aa00f897013338aebbfa00b7e2">&#9670;&nbsp;</a></span>m_interrupting_snd</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">bool ipc::transport::Posix_mq_handle::m_interrupting_snd</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Starting at <code>false</code>, this is made <code>true</code> via <a class="el" href="classipc_1_1transport_1_1Posix__mq__handle.html#a0afe8a636902116223b4f33f081119df" title="Implements Persistent_mq_handle API: Turn on preemptive/concurrent interruption of blocking-sends and...">interrupt_sends()</a>, and back by <a class="el" href="classipc_1_1transport_1_1Posix__mq__handle.html#a01d842eb304fff361d72a090113ffc9f" title="Implements Persistent_mq_handle API: Turn off preemptive/concurrent interruption of blocking-sends an...">allow_sends()</a>; acts as a guard against doing it when already in effect. </p>
<p >Note that that is its only purpose; as <a class="el" href="classipc_1_1transport_1_1Posix__mq__handle.html#a64e44dd9a0e2ba1f870a231ffcf02fb9" title="Impl body for *_sendable() and *_receivable().">wait_impl()</a> never checks it; instead it relies on <code>epoll_wait()</code> detecting a readable <a class="el" href="classipc_1_1transport_1_1Posix__mq__handle.html#a41b284b4476d7b51feceb57f4d0f6ddc" title="Other-direction counterpart to m_interrupt_detector_snd.">m_interrupt_detector_rcv</a>. </p>

<p class="definition">Definition at line <a class="el" href="posix__mq__handle_8hpp_source.html#l00651">651</a> of file <a class="el" href="posix__mq__handle_8hpp_source.html">posix_mq_handle.hpp</a>.</p>

<p class="reference">Referenced by <a class="el" href="posix__mq__handle_8cpp_source.html#l01118">allow_impl()</a>, and <a class="el" href="posix__mq__handle_8cpp_source.html#l01079">interrupt_impl()</a>.</p>

</div>
</div>
<a id="ae9465f6fe5c2d36bcbe747fe1bf8d995" name="ae9465f6fe5c2d36bcbe747fe1bf8d995"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae9465f6fe5c2d36bcbe747fe1bf8d995">&#9670;&nbsp;</a></span>m_mq</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="namespaceipc_1_1transport.html#a7ee4551983d9df16ec16a3139bac50e8">Native_handle</a> ipc::transport::Posix_mq_handle::m_mq</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Underlying MQ handle. </p>
<p >We are a thin wrapper around this really. <code>.null()</code> if creation fails in ctor, or if <code>*this</code> was moved-from. This is very light-weight; probably <code>int</code>. </p>

<p class="definition">Definition at line <a class="el" href="posix__mq__handle_8hpp_source.html#l00627">627</a> of file <a class="el" href="posix__mq__handle_8hpp_source.html">posix_mq_handle.hpp</a>.</p>

<p class="reference">Referenced by <a class="el" href="posix__mq__handle_8cpp_source.html#l01118">allow_impl()</a>, <a class="el" href="posix__mq__handle_8cpp_source.html#l00404">epoll_setup()</a>, <a class="el" href="posix__mq__handle_8cpp_source.html#l01079">interrupt_impl()</a>, <a class="el" href="posix__mq__handle_8cpp_source.html#l00616">max_msg_size()</a>, <a class="el" href="posix__mq__handle_8cpp_source.html#l00641">max_n_msgs()</a>, <a class="el" href="posix__mq__handle_8cpp_source.html#l01299">native_handle()</a>, <a class="el" href="posix__mq__handle_8cpp_source.html#l00525">operator=()</a>, <a class="el" href="posix__mq__handle_8cpp_source.html#l00060">Posix_mq_handle()</a>, <a class="el" href="posix__mq__handle_8cpp_source.html#l00926">receive()</a>, <a class="el" href="posix__mq__handle_8cpp_source.html#l00728">send()</a>, <a class="el" href="posix__mq__handle_8cpp_source.html#l00660">set_non_blocking()</a>, <a class="el" href="posix__mq__handle_8cpp_source.html#l00994">timed_receive()</a>, <a class="el" href="posix__mq__handle_8cpp_source.html#l00796">timed_send()</a>, <a class="el" href="posix__mq__handle_8cpp_source.html#l00880">try_receive()</a>, <a class="el" href="posix__mq__handle_8cpp_source.html#l00678">try_send()</a>, <a class="el" href="posix__mq__handle_8cpp_source.html#l01178">wait_impl()</a>, and <a class="el" href="posix__mq__handle_8cpp_source.html#l00501">~Posix_mq_handle()</a>.</p>

</div>
</div>
<a id="aeda588bb49f6089bb3c2f7043191006c" name="aeda588bb49f6089bb3c2f7043191006c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aeda588bb49f6089bb3c2f7043191006c">&#9670;&nbsp;</a></span>m_nb_task_engine</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">flow::util::Task_engine ipc::transport::Posix_mq_handle::m_nb_task_engine</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Never used for <code>.run()</code> or <code>.async()</code> &ndash; just so we can construct <a class="el" href="classipc_1_1transport_1_1Posix__mq__handle.html#a0cf6cf0cd88b34cfd7dd93d66e383f95" title="Short-hand for anonymous pipe read end.">Pipe_reader</a>, <a class="el" href="classipc_1_1transport_1_1Posix__mq__handle.html#a4bf3bfa8192e7d73e52054c63919187a" title="Short-hand for anonymous pipe write end.">Pipe_writer</a>. </p>

<p class="definition">Definition at line <a class="el" href="posix__mq__handle_8hpp_source.html#l00657">657</a> of file <a class="el" href="posix__mq__handle_8hpp_source.html">posix_mq_handle.hpp</a>.</p>

<p class="reference">Referenced by <a class="el" href="posix__mq__handle_8cpp_source.html#l00525">operator=()</a>.</p>

</div>
</div>
<a id="af4a21d3354b44d99aee79af5b1464f10" name="af4a21d3354b44d99aee79af5b1464f10"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af4a21d3354b44d99aee79af5b1464f10">&#9670;&nbsp;</a></span>S_HAS_NATIVE_HANDLE</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">constexpr bool ipc::transport::Posix_mq_handle::S_HAS_NATIVE_HANDLE = true</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span><span class="mlabel">constexpr</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Implements concept API. Contrast this value with <a class="el" href="classipc_1_1transport_1_1Bipc__mq__handle.html#a7507ac097eb580a44622429c69af2f1d" title="Implements concept API.">Bipc_mq_handle::S_HAS_NATIVE_HANDLE</a>. </p>

<p class="definition">Definition at line <a class="el" href="posix__mq__handle_8hpp_source.html#l00071">71</a> of file <a class="el" href="posix__mq__handle_8hpp_source.html">posix_mq_handle.hpp</a>.</p>

</div>
</div>
<a id="a1ba246862d7484019476e9b60426833e" name="a1ba246862d7484019476e9b60426833e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1ba246862d7484019476e9b60426833e">&#9670;&nbsp;</a></span>S_RESOURCE_TYPE_ID</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">const <a class="el" href="namespaceipc_1_1transport.html#a33de1c256addb3964b839dc2dd407d24">Shared_name</a> ipc::transport::Posix_mq_handle::S_RESOURCE_TYPE_ID = <a class="el" href="classipc_1_1util_1_1Shared__name.html#a48f20b7b54490aa10dc64081d34c55b2">Shared_name::ct</a>(&quot;posixQ&quot;)</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Implements concept API. </p>

<p class="definition">Definition at line <a class="el" href="posix__mq__handle_8hpp_source.html#l00068">68</a> of file <a class="el" href="posix__mq__handle_8hpp_source.html">posix_mq_handle.hpp</a>.</p>

</div>
</div>
<hr/>The documentation for this class was generated from the following files:<ul>
<li>transport/<a class="el" href="posix__mq__handle_8hpp_source.html">posix_mq_handle.hpp</a></li>
<li>transport/<a class="el" href="posix__mq__handle_8cpp_source.html">posix_mq_handle.cpp</a></li>
<li>transport/<a class="el" href="transport__fwd_8hpp_source.html">transport_fwd.hpp</a></li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Fri Apr 11 2025 20:02:27 for Flow-IPC by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.4
</small></address>
</body>
</html>
